我还是Perl的新手。我正在尝试使用一些数组并将它们放在另一个数组中而不使用循环。
my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr");
my @array2=$array1[2 .. 4];
但它不起作用。
我希望@ array2的结果是“def ghi jkl”。
答案 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];