首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl -将grep应用于AoA并从已经返回的数组中获取特定元素。

Perl -将grep应用于AoA并从已经返回的数组中获取特定元素。
EN

Stack Overflow用户
提问于 2014-10-02 20:41:21
回答 1查看 148关注 0票数 0

我有2D数组,我想通过特定的索引进行过滤,但返回另一个索引。我试过这样做:

代码语言:javascript
复制
print (grep {$_->[0] eq "defuser"} @passwd_file_AoA)[2];

但给了我语法错误。

编辑:

从这个数组

代码语言:javascript
复制
@AoA = ([1,"a","b"],[2,"c","d"]);

我想得到"a“

我试着按照下面的建议跟随,但返回我1。

代码语言:javascript
复制
use Data::Dumper; 
@AoA = ([1,"a","b"],[2,"c","d"]);
$a = map { $_->[1] } grep { $_->[0] == 1 } @AoA;
print Dumper $a
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 21:29:04

如果要使用数组数组中的值创建一个全新的数组,则可以使用mapgrep

代码语言:javascript
复制
my @new_arr = map { $_->[2] } grep { $_->[0] eq "defuser" } @AoA;

如果您想打印并创建一个新的数组:

代码语言:javascript
复制
my @new_arr = map { say $_->[2]; $_->[2] } grep { $_->[0] eq "defuser" } @AoA;

(使用say,它需要Perl5.10或更高版本和use feature ':5.10',但每次打印到STDERR时,您都不必键入\n )

正如ThisSuitIsBlackNot所说,打印可以用

代码语言:javascript
复制
for my $a (@AoA) {
    say $_->[2] if $_->[0] eq 'defuser';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26169315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档