新手提醒。以下内容:
use List::Util qw(max);
use List::MoreUtils qw(apply);
my @list = (
{ 'name' => 'foo' , 'value' => 3 } ,
{ 'name' => 'bar' , 'value' => 31 } ,
{ 'name' => 'longname' , 'value' => -33 } ,
{ 'name' => 'grill' , 'value' => 333 } ,
);
print max apply { length $_->{name} } @list;
输出,
HASH(0x2e47c28)
而不是8
。
我做错了什么?
答案 0 :(得分:4)
在这种情况下您不需要apply
,因为length
不会修改列表项:
print max map { length $_->{name} } @list;
答案 1 :(得分:2)
List::MoreUtils
文档中的内容并不十分清楚,但您必须在代码块中分配$_
以获取值传播出去。因此,将代码块更改为{ $_ = length $_->{name} }
并且它可以正常工作。