我有2D数组,我想通过特定的索引进行过滤,但返回另一个索引。我试过这样做:
print (grep {$_->[0] eq "defuser"} @passwd_file_AoA)[2];但给了我语法错误。
编辑:
从这个数组
@AoA = ([1,"a","b"],[2,"c","d"]);我想得到"a“
我试着按照下面的建议跟随,但返回我1。
use Data::Dumper;
@AoA = ([1,"a","b"],[2,"c","d"]);
$a = map { $_->[1] } grep { $_->[0] == 1 } @AoA;
print Dumper $a发布于 2014-10-02 21:29:04
如果要使用数组数组中的值创建一个全新的数组,则可以使用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,它需要Perl5.10或更高版本和use feature ':5.10',但每次打印到STDERR时,您都不必键入\n )
正如ThisSuitIsBlackNot所说,打印可以用
for my $a (@AoA) {
say $_->[2] if $_->[0] eq 'defuser';
}https://stackoverflow.com/questions/26169315
复制相似问题