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

时间:2016-01-09 04:08:24

标签: arrays perl subset

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

示例:

@arr = qw(a b c d e f);
@arr2 = qw( 0 2 4);

而不是:

@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

1 个答案:

答案 0 :(得分:6)

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

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);

输出:

["a", "c", "e"]