好吧,我还是Perl的新手,所以这个问题的答案可能看起来相当明显,但我已经用Python完成了一些工作,我遇到了学习if,elsif和其他循环;特别是,他们不能正常工作。这是我的代码:
my $x = 0;
print "X has been set to ". $x .".\n";
while ($x<11)
{
$x++;
print "The value of x is now ". $x .".\n";
if ($x>4, $x<7){
print "Something\n";
system ("Pause");
}
elsif ($x>7, $x>11){ #<--Here
print "Something else\n";
system ("Pause");
}
elsif ($x==11){
print "Last line\n";
}
} #<-- and Here
system "Pause";
也许我的问题现在很明显,但如果没有,问题是它似乎没有评估任何表达式;它只打印它找到的第一个循环,在这种情况下是if循环。如果我删除它,或将其注释掉,它会直接进入第一个elsif循环;也就是说,无论x的值如何,它都会打印出它找到的第一个循环而不进行任何评估。当我添加
use strict;
use warnings;
我在第16行的void上下文中收到了警告“无用的数字gt(&gt;)”和第24行的相同内容。我在原始代码中用箭头标记了这些内容和这里。我在做什么/不做我应该做的事情?
答案 0 :(得分:4)
if (expr1, expr2)
会忽略expr1
。你的意思是and
还是&&
? (另外,如果是这样,您的elsif
应该正在测试x<11
。)
答案 1 :(得分:4)
use strict;
use warnings;
while ($x<11)
{
$x++;
print "The value of x is now ". $x .".\n";
if ($x>4 and $x<7){
print "Something\n";
system ("Pause");
}elsif ($x>7 and $x>11){ #<--Here
print "Something else\n";
system ("Pause");
}elsif ($x==11){
print "Last line\n";
}
} #<-- and Here
system "Pause";