我有一个哈希数组:
my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };
我想获得所有名称的数组(显示在 CGI 弹出菜单中)。我尝试使用这个 grep 语句:
my @names = grep { $_->{name} } @sports;
但它只是返回一个散列值数组...
所以我目前正在使用循环来遍历所有值,将它们插入另一个数组。
有什么办法可以加快速度吗?
最佳答案
use strict;
use warnings;
my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };
my @names = map $_->{name}, @sports;
print for @names;
D:\temp> perl -l m.pl Rugby Football
但请注意,这与速度没有任何关系,至少没有太大关系,而且速度不应该是您的主要关注点;可读性应该是它。当然,效率很重要,但不要让自己误以为代码越简洁、越隐晦,程序的性能就越好。事实并非如此。 To assess performance, benchmark your programs .
关于arrays - 在 Perl 中,如何将散列数组转换为值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615120/