如何使用pop在Perl中向后打印数组?

时间:2014-04-04 03:11:37

标签: arrays perl loops reverse

我开始学习Perl,但是使用pop命令以相反顺序打印数组时出现问题。我希望使用pop而不是像reverse这样的其他命令,或者使用反向索引等技术。每当我用数组运行这个循环时,@ ananArray =(1,2,3,4,5);我最终只得到了#34; 5,4,3和#34;结果是。我的逻辑或语法有问题吗?

for ($i = 0; $i <= $#anotherArray + 1; $i++) {
        if ($i == 0)
        {
                print "Third way: ";
        }
        $temp = pop @anotherArray;
        print "$temp ";
}

3 个答案:

答案 0 :(得分:3)

use strict;
use warnings;

my @array = (-1,0,1..5);

while (@array) {
    my $e = pop @array;
    print "$e\n";
}

答案 1 :(得分:2)

问题是阵列在弹出时会缩小,因此循环中$i的限制会变小。

最好的方法是使用while循环来保持从数组中弹出,直到它为空。

我不确定“第三方式”部分是什么意思,但你可以在循环之外打印出来。

喜欢这个

use strict;
use warnings;

my @anotherArray = (1, 2, 3, 4, 5);

print "Third way: ";

while (@anotherArray) {
  print pop @anotherArray;
}

<强>输出

Third way: 54321

答案 2 :(得分:1)

只是另一种方式,因为它仍然是Perl:

use strict;
use warnings;

my @anotherArray = ( 1 .. 5 );

print pop @anotherArray while @anotherArray;

它只是说了什么:

从anotherArray打印popped-of-element,只要anotherArray中有许多元素。

这种循环或放置条件(如ifunless)对于单行代码是很好的,但是当它是整个BLOCK代码时,它会非常皱眉。 / p>