让我们说我们有以下数组:

my @arr=('Jan','Feb','Mar','Apr');
my @arr2=@arr[0..2];

如果我们有如下所示的数组引用,我们该怎么做?
my $arr_ref=['Jan','Feb','Mar','Apr'];
my $arr_ref2; # How can we do something similar to @arr[0..2]; using $arr_ref ?

最佳答案

要获取以数组引用开头的 slice ,请将数组名称替换为包含数组引用的块。我使用空格来散布各个部分,但还是一样:

 my @slice =   @   array   [1,3,2];
 my @slice =   @ { $aref } [1,3,2];

如果块内的引用是简单的标量(因此,不是数组或哈希元素或大量代码),则可以省去大括号:
 my @slice =   @$aref[1,3,2];

然后,如果要从中进行引用,则可以使用匿名数组构造函数:
 my $slice_ref = [ @$aref[1,3,2] ];

使用新的post-dereference feature (experimental) in v5.20
use v5.20;
use feature qw(postderef);
no warnings qw(experimental::postderef);

my @slice = $aref->@[1,3,2];

07-24 09:45
查看更多