为什么这段代码只打印第一个元素?

时间:2016-11-25 16:03:43

标签: perl

有人可以向我解释为什么只打印这个数组的第一项吗?

    print "Hello World!\n";

    @array1 = ("john","haider","elley","uul");

    @array2 = qw/This is an array/;

    $array_size=scalar @array1;

    print "Size: ",$array_size,"\n";

    $i;

    for($i=0; $i<=$array_size; $i=$i+1)
    {
             print"Array elements are=",$array1[i],"\n";
    }

1 个答案:

答案 0 :(得分:5)

因为你在这里打字错误:$array1[i]

那应该是$i,就像在$array1[$i]中一样 - 这是use strict; use warnings会警告你的事情。 Bareword "i" not allowed while "strict subs" in use

但是因为它存在 - 因为你在那里使用i,并且它不是变量 - 它被评估为零,所以你只需要打印数组的第一个元素。

更好的习语是:

foreach my $value ( @array1 ) { 
    print "Array elements are=", $value,"\n"; 
}

很少有必要(或希望)通过perl中的索引来操作数组。