Почему у меня возникают проблемы при сравнении строк из ввода в Perl? - PullRequest
2 голосов
/ 04 марта 2009

Я не знаю, что я мог сделать неправильно с этой простой транзакцией, но она не работает:

print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}

Я в основном хочу знать, как проверить пользовательский ввод. Этот маленький кусочек кода не будет работать для меня. Я просто пытаюсь напечатать $ans, если пользователь ввел y.

Есть предложения?

РЕДАКТИРОВАТЬ: - Я также пробовал одинарные кавычки

Ответы [ 4 ]

14 голосов
/ 04 марта 2009

Вы делаете пару вещей неправильно.

(1) Не используйте оператор с бриллиантами (<>), когда хотите . Алмазный оператор также будет читать файлы из @ARGV, которые вы, вероятно, не хотите.

(2) $ ans никогда не будет равно "y", если вы не добавите его первым. В конце будет новая строка.

5 голосов
/ 04 марта 2009

лекарство от загадочных переменных:

use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
1 голос
/ 04 марта 2009

Несмотря на то, что на ваш прямой вопрос был дан ответ, вы можете посмотреть на альтернативы, такие как Term :: Readline

0 голосов
/ 04 марта 2009

Вы пробовали:

if($ans eq 'y'){print $ans;}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...