今天在Perl课堂上,一个学生上交了一个令我烦恼的作业。我们正在研究ARGV,但结果并非我预期的那样。他的程序(meme.pl)是:

#!/usr/bin/perl
$A = $ARGV[0];
chomp($A);
if ($A == "godzilla"){
    print "$A\n";
}
else {
    print "We need a monster's name\n";
}

如果输入:
% ./meme.pl bob

结果是
% bob

因此变量分配有效,但是无论在命令行上键入什么,条件($ A ==“godzilla”)都是正确的。我期望由于$ ARGV [0]是“bob”并且$ A = $ ARGV [0],因此$ A =“godzilla”应该不正确。

我想念什么?我已经花了几个小时来梳理这段代码,而且我知道我只是忽略了一些小事情。

最佳答案

使用eq而不是==来测试字符串是否相等:

if ($A eq "godzilla"){

有关更多信息,请访问perldoc perlop

注意:在脚本顶部添加use strict;use warnings;会引导您朝正确的方向发展。

09-20 18:04