Массива @fruits
нет, поэтому $fruit = $fruits[<STDIN>]
не имеет смысла. $fruit
будет установлено на undef
, что оценивается как ноль в числовом контексте
Между тем, $fruit_list{'1'}
равно Apple
, что также оценивается как ноль в числовом контексте
Оператор ==
сравнивает числа , поэтому if ($fruit == $fruit_list{'1'})
сравнивает ноль с нулем и всегда находит совпадение
Вы должны были видеть предупреждающие сообщения при запуске вашей программы. Вы должны никогда игнорировать такие сообщения, поскольку они существуют, чтобы помочь вам
Вы должны добавить use strict
и use warnings 'all'
в начало каждой написанной вами Perl-программы и исправить все полученные сообщения, прежде чем просить других о помощи
Вы также должны правильно выложить свой код, включая отступы, чтобы другие люди (и вы сами) могли его легко прочитать. Я отредактировал код в вашем вопросе: пожалуйста, сделайте это самостоятельно в будущем, по крайней мере, прежде чем просить других людей о помощи с вашим кодом