@alist=qw/1 50 2 658 74 256 21/; ($greatest) = sort {$b<=>$a}@alist; print $greatest; #### use Benchmark ; my @a = (1..500000); my $greatest; timethese(5, { 'sort' => sub {($greatest)=sort{$b<=>$a}@a;}, 'grep' => sub { grep($greatest=($_>$greatest)?$_:$greatest,@a); }, }); Benchmark: timing 5 iterations of grep, sort... grep: 3 wallclock secs ( 3.36 usr + 0.02 sys = 3.38 CPU) @ 1.48/s (n=5) sort: 13 wallclock secs (12.22 usr + 0.04 sys = 12.26 CPU) @ 0.41/s (n=5)