如何切片数组引用并在一行中返回数组引用?

时间:2019-04-15 22:25:55

标签: perl

请考虑以下代码行。我想对数组引用$ a进行切片,并将结果作为分配给$ b的数组引用返回。我可以按照以下两行内容进行操作。我为一口气做到这一点而感到沮丧!该怎么办?

$a = [1,2,3,4,5];
###the desired result###########################
@b = @{$a}[1 .. @{$a} - 1];
$b = \@b; # $b is [2,3,4,5]
################################################
###trying to get the desired result in one line##
$b = \@{$a}[1 .. @{$a} - 1]; # $b is \5;
$b = \{@{$a}[1 .. @{$a} - 1]}; # $b is \{ 2 => 3, 4 => 5 }
$b = $a->[1 .. @{$a} - 1]; # $b is 1
$b = $a->@[1 .. @{$a} - 1]; # $b is 5

2 个答案:

答案 0 :(得分:4)

你可以说

$b = [ @{$a}[1 .. @{$a} - 1] ];

答案 1 :(得分:2)

this question的启发,还有

$b = [ splice @{[@$a]},1 ]