此代码正确输出行数组中的标量:
$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。
答案 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就不会有太多麻烦了。