当我将它放在foreach循环中时,为什么我的Perl代码不起作用?

时间:2010-05-07 17:05:47

标签: perl foreach

此代码正确输出行数组中的标量:

  $line = "This is my favorite test";
  @row = split(/ /, $line);

  print $row[0];
  print $row[1];

foreach循环中的相同代码不会打印任何标量值:

  foreach $line (@lines){
      @row = split(/ /, $line);
      print $row[0];
      print $row[1];
  }

可能导致这种情况发生的原因是什么?

我是来自python的Perl新手。我需要为我的新职位学习Perl。

2 个答案:

答案 0 :(得分:3)

正如Jefromi的评论中已经提到的,无论问题是什么,它都存在于您发布的代码之外。这完全没问题:

$lines[0] = "This is my favorite test";

foreach $line (@lines) {
    @row = split(/ /, $line);
    print $row[0];
    print $row[1];
}

输出为Thisis

答案 1 :(得分:0)

当我遇到这些问题时,我想知道为什么块中的某些东西没有发生,我添加一些调试代码以确保我实际进入块:

 print "\@lines has " . @lines . " elements to process\n";
 foreach my $line ( @lines )
      {
      print "Processing [$line]\n";
      ...;
      }

您也可以通过设置断点和检查变量在您喜欢的调试器中执行此操作,但这对我来说有点太多了。 :)

如果您需要学习Perl并且已经了解Python,那么在几天之内通过Learning Perl就不会有太多麻烦了。