Почему у меня возникают проблемы с сравнением строк из входных данных в Perl?
-
03-07-2019 - |
Вопрос
Я не знаю, что я могу сделать не так с этой простой транзакцией, но это не работает:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
В принципе, я хочу знать, как протестировать пользовательский ввод.Этот маленький фрагмент кода у меня не сработает.Я просто пытаюсь напечатать $ans
если y
вводится пользователем.
Есть какие-нибудь предложения?
Редактировать:- Я также пробовал использовать одинарные кавычки
Решение
Ты делаешь пару вещей неправильно.
(1) Не используйте алмазный оператор (<>) когда ты захочешь <STDIN>.Оператор diamond также будет считывать файлы из @ARGV, которые вам, вероятно, не нужны.
(2) $ ans никогда не будет равен "y", если вы сначала не проглотите его.В конце у него будет новая строка.
Другие советы
Панацея от переменных загадочного содержания:
use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
Хотя на ваш прямой вопрос был дан ответ, возможно, вы захотите рассмотреть такие альтернативы, как Термин::Строка чтения
Вы пробовали:
if($ans eq 'y'){print $ans;}
?