Почему у меня возникают проблемы с сравнением строк из входных данных в Perl?

StackOverflow https://stackoverflow.com/questions/608254

  •  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;}

?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top