我有一个数据结构是一个包含散列数组的散列。我想到达那里,并拿出第一个匹配我正在寻找的值的散列。我尝试这样做:为什么Perl的移位抱怨'参数1的类型必须是数组(不是grep迭代器)。'?
my $result = shift grep {$_->{name} eq 'foo'} @{$hash_ref->{list}};
但是,这给了我这个错误:Type of arg 1 to shift must be array (not grep iterator).
我重读perldoc为grep
,我觉得我在做什么是有意义的。 grep
返回一个列表,对吧?它是否在错误的环境中?
我现在要使用一个临时变量,但我想弄清楚为什么这不起作用。
我想我会写白名单上的'列表不是数组'100次。谢谢。 – wes 2010-03-28 22:19:57
现在有一个更好的答案为这个常见问题解答:http://www.effectiveperlprogramming.com/blog/39 – 2010-03-28 22:31:18
@brian d foy - 何时常见问题得到更新? (即,我们会在Perl 5版本10的发行版中看到它,还是会在版本12中发布?) – Quentin 2010-03-28 22:37:56