我有2D数组,我想按特定索引过滤但返回另一个索引。我试过这个:
print (grep {$_->[0] eq "defuser"} @passwd_file_AoA)[2];
但是给了我语法错误。
编辑:
从这个数组
@AoA = ([1,"a","b"],[2,"c","d"]);
我想得到 “一”
我根据贝娄建议尝试了以下但是给我回复1
use Data::Dumper;
@AoA = ([1,"a","b"],[2,"c","d"]);
$a = map { $_->[1] } grep { $_->[0] == 1 } @AoA;
print Dumper $a
答案 0 :(得分:1)
如果您想使用数组数组中的值创建全新数组,可以使用map
和grep
:
my @new_arr = map { $_->[2] } grep { $_->[0] eq "defuser" } @AoA;
如果要打印并制作新阵列:
my @new_arr = map { say $_->[2]; $_->[2] } grep { $_->[0] eq "defuser" } @AoA;
(使用say
,需要perl 5.10或更高版本以及use feature ':5.10'
,但每次打印到STDERR时都需要输入\n
正如ThisSuitIsBlack所说,打印可以用
完成for my $a (@AoA) {
say $_->[2] if $_->[0] eq 'defuser';
}