Perl 如何获得变换数组的最大值

Perl 如何获得变换数组的最大值,perl,Perl,新手警报。以下是: use List::Util qw(max); use List::MoreUtils qw(apply); my @list = ( { 'name' => 'foo' , 'value' => 3 } , { 'name' => 'bar' , 'value' => 31 } , { 'name' => 'longname' , 'value' => -33 } ,

新手警报。以下是:

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


我做错了什么?

列表::MoreUtils
文档中看不太清楚,但您必须在代码块中分配给
$\uuuu
,以获得要传播的值。因此,将代码块更改为
{$\=length${name}}
,它就可以工作。

在这种情况下,您不需要
应用
,因为
length
不会修改列表项:

print max map { length $_->{name} } @list;