perl - 除了最后一个之外,你如何提取数组的所有元素?

时间:2010-08-17 15:49:46

标签: arrays perl

我需要提取除了last之外的数组中的所有元素,并将它们存储在标量中供以后使用。 起初,我认为这可以使用数组切片,但看起来你不能倒数。 例如:

my $foo = ($bar[0..-2]);  

my $foo = ($bar[-2..0]);  

任何帮助都会非常感激,因为这开始让我感到疯狂,我无法在其他地方或通过实验找到解决方案。
奥斯卡

4 个答案:

答案 0 :(得分:17)

my $foo = join ',', @bar[0..$#bar-1];

将(从逗号)连接数组@bar的所有元素,除了最后一个元素到foo。

此致

RBO

答案 1 :(得分:11)

my @foo = @bar;
pop @foo;

my @foo = @bar[ -@bar .. -2 ];

或者如果可以改变@bar,只需

my @foo = splice( @bar, 0, -1 );

答案 2 :(得分:2)

@foo = @bar[0 .. $#foo - 1];

如果你想创造一个令人头疼的问题:

my @x = (1, 2, 3);
print "@x[-@x .. -2]";

答案 3 :(得分:2)

这会将除最后一个数组元素之外的所有数组元素存储到标量中。每个数组元素将由一个空格分隔。

use strict;
use warnings;

my @nums = 1 .. 6;
my $str = "@nums[0 .. $#nums - 1]";
print $str;

__END__

1 2 3 4 5

难道你真的不想将元素存储到另一个数组中吗?如果将它们存储在标量中,则检索它们可能会有问题。在上面的例子中,如果数组的任何元素已经有一个空格,那么你将无法从标量中正确地重建数组。