use strict ; use warnings ; my @arr = ( 3, 4, 71, 1, 1.5, -598, -100203, 0.5, -2, -1.5 ); my $result ; while (my ($ix, $val) = each @arr) { next if ( $val < 0 || int $val != $val || ($result && $val > $result->[0]) ) ; $result = [ $val, $ix ] ; } if ( $result ) { print $result->[0] . " at " . $result->[1] . "\n" ; } __END__ 1 at 3