ske*_*ver 2 arrays mapping perl hash
我有一系列哈希:
my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };
Run Code Online (Sandbox Code Playgroud)
我想获得所有名称的数组(显示在CGI弹出菜单中).我尝试使用这个grep语句:
my @names = grep { $_->{name} } @sports;
Run Code Online (Sandbox Code Playgroud)
但它只返回一个哈希值数组......
所以我现在正在使用循环迭代所有值,将它们推入另一个数组.
有没有办法加快速度?
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;
Run Code Online (Sandbox Code Playgroud)
D:\temp> perl -l m.pl Rugby Football
但请注意,这与速度没有任何关系,至少不是很明显,速度不应该是你的主要关注点; 可读性应该是它.当然,效率很重要,但不要让自己被愚弄,认为代码越简洁和神秘,程序的性能就越好.事实并非如此.为了评估性能,基准你的程序.