是否可以使用整数数组(索引)选择数组的特定元素?我知道这可以通过循环轻松完成,但我希望有一个单行解决方案。
示例:
@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
答案 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"]