use List::Util qw/ reduce /; sub min_max_avg { $res= reduce { my $r= ref $a ? $a : [($a) x 3]; if ($b < $r->[0]) { $r->[0]= $b; } elsif ($b > $r->[1]) { $r->[1]= $b; } $r->[2]+=$b; $r } @_; return @$res[0,1], $res->[2] / @_; }