3

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

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

但它行不通。

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

4

3 回答 3

3

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

my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr"); 
my @array2=@array1[2 .. 4];              # ====> @array1 not $array1
print join(",", @array2), "\n";
于 2012-12-04T07:06:34.393 回答
2

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

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

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

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

不过,我怀疑你是否真的想避免循环,尽管有请求。

于 2012-12-04T07:46:29.347 回答
1

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

@array2=@array1[2..4];
于 2012-12-04T07:08:41.237 回答