List::Util::reduceの使い所
検索してもあまり例がみつけられなかったので備忘で残す。
use List::Util; use Data::Dumper; $foo = + [ +{k=>'a', v=>10}, +{k=>'b', v=>30}, +{k=>'c', v=>40}, +{k=>'d', v=>30},]; $max_foo_v = List::Util::reduce { $a->{k} >= $b->{k} ? $a : $b } @$foo; print Dumper($max_foo_v); $VAR1 = { 'k' => 'a', 'v' => 10 };
できないことはないけど、これは可読性がないのでやらないか。
use List::Util; use Data::Dumper; $foo = + [ +{k=>'a', v=>10}, +{k=>'b', v=>30}, +{k=>'c', v=>40}, +{k=>'d', v=>30},]; $sum_v = List::Util::reduce { $a + $b->{v}} 0, @$foo; print Dumper($sum_v); #たぶん、普通はこっちだろうけど。 # List::Util::sum( map {$_->{v}} @$foo );