使用整数数组选择数组元素

-2 arrays perl subset

是否可以使用整数数组(索引)选择数组的特定元素?我知道这可以通过循环轻松完成,但我希望有一个单行解决方案.

例:

@arr = qw(a b c d e f);
@arr2 = qw( 0 2 4);
Run Code Online (Sandbox Code Playgroud)

而不是:

@arr3 = @arr[0,2,4];
@arr3 = @arr[@arr2]; #won't work as @arr2 returns number of elements
@arr3 = @arr[join(',', @arr2)] #won't work as join returns a string
Run Code Online (Sandbox Code Playgroud)

Mat*_*cob 6

你实际上已经有了正确的答案,但显然从未尝试过.它被称为数组切片,由于需要下标列表,因此在列表上下文中计算数组.正如您所提到的,在标量上下文中评估数组会返回它包含的元素数.

use strict;
use warnings;

use Data::Dump;

my @arr1 = qw(a b c d e f);
my @arr2 = qw(0 2 4);
my @arr3 = @arr1[@arr2];

dd(\@arr3);
Run Code Online (Sandbox Code Playgroud)

输出:

["a", "c", "e"]
Run Code Online (Sandbox Code Playgroud)