Вы используете числовое сравнение, чтобы проверить равенство строк, которое преобразует аргументы в числа перед их сравнением.
В этом случае 'start' не является числом, поэтому оно преобразуется в 0
;значение в $ARGV[0]
(которое здесь должно быть словом) также преобразуется, что приводит к другому 0
и конечному условию if (0 == 0)
, которое всегда истинно.
Вы хотите использоватьвместо этого eq
оператор сравнения по строке:
if ($ARGV[0] eq 'start') { start }
См. документы для получения дополнительной информации о различных операторах сравнения.
Обратите внимание, что (как былокак указано в комментариях) включение use warnings;
вверху вашего скрипта заставило бы perl
предупредить вас об этом с самого начала.Как правило, всегда включайте use warnings;
и use strict;
, так как это помогает обнаруживать ошибки такого рода на ранних этапах.