Perl Условно не подставляя в скалярное значение - PullRequest
2 голосов
/ 11 июня 2011

Почему-то мои операторы if работают не так, как я хочу.

use strict;
use warnings;

my $syl;
my $name = "Chris";
print "Enter my name\n";
$syl = <>;
if ($syl eq $name)
{
  print "You entered my name!\n";
}
else
{
  print "That's not my name!\n";
}

Похоже, что он должен работать из всех прочитанных мной руководств, но когда я набираю "Крис", будь то с заглавной буквы, строчными буквами, с кавычками или без них, он всегда оценивается как ложный. Используйте Строгие и Используйте Предупреждения, не говорите мне, что я делаю что-то не так, и что, если что, я могу сделать?

1 Ответ

8 голосов
/ 11 июня 2011

Вам нужно использовать chomp. Это удаляет новую строку из конца входной строки, которая была помещена туда, когда пользователь набрал 'enter.'

$syl = <>;
chomp $syl;
#.... etc...
...