采取一些数组而不循环

时间:2012-12-04 07:04:53

标签: arrays perl

我还是Perl的新手。我正在尝试使用一些数组并将它们放在另一个数组中而不使用循环。

my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr");
my @array2=$array1[2 .. 4];

但它不起作用。

我希望@ array2的结果是“def ghi jkl”。

3 个答案:

答案 0 :(得分:3)

您需要将@用于数组切片而不是标量标记($):

my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr"); 
my @array2=@array1[2 .. 4];              # ====> @array1 not $array1
print join(",", @array2), "\n";

答案 1 :(得分:2)

列表切片的语法是@array[EXPR](不是$array[EXPR]),所以你想要

my @array2 = @array1[2..4];

请注意,上面有三个循环。如果你想避免循环,你必须使用

my @array2;
$array2[0] = $array1[2];
$array2[1] = $array1[3];
$array2[2] = $array1[4];

尽管如此,我怀疑你确实想避免循环。

答案 2 :(得分:1)

将您的陈述更改为以下内容:

@array2=@array1[2..4];