Perl If和Elsif循环有帮助

时间:2011-04-06 04:51:38

标签: perl if-statement control-flow

好吧,我还是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行的相同内容。我在原始代码中用箭头标记了这些内容和这里。我在做什么/不做我应该做的事情?

2 个答案:

答案 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";