为什么我不能匹配Perl中标准输入的字符串?

ian*_*215 3 perl

为什么我的脚本无法正常工作?

我关注了一段YouTube视频并为该人工作.

我使用ActiveState ActivePerl 5.12.2.1202在Windows上运行Perl

这是我微小的代码块.

print "What is your name?\n";
$name = <STDIN>;
if ($name eq "Jon") {
print "We have met before!\n";
} else {
print "We have not met before.\n";
}
Run Code Online (Sandbox Code Playgroud)

代码会自动跳转到else语句,甚至不会检查if语句.

Ric*_*ook 19

该语句$name = <STDIN>;从标准输入读取并包括终止换行符" \n".使用以下chomp函数删除此字符:

print "What is your name?\n";
$name = <STDIN>;
chomp($name);
if ($name eq "Jon") {
  print "We have met before!\n";
} else {
  print "We have not met before.\n";
}
Run Code Online (Sandbox Code Playgroud)


bri*_*foy 5

编程的技巧是知道你的数据是什么.如果某些事情没有像您期望的那样,请查看数据,看看它们是否符合您的预期.例如:

 print "The name is [$name]\n";
Run Code Online (Sandbox Code Playgroud)

你把括号放在它周围,这样你就可以看到任何可能存在的额外空格.在这种情况下,你会看到:

The name is [Jon
]
Run Code Online (Sandbox Code Playgroud)

这是你的线索,有额外的东西.由于eq必须完全匹配,因此无法匹配.

如果您刚开始使用Perl,请尝试学习Perl.这比来自YouTube的随机视频要好得多.:)