my @pairs = ([0.456234, 'url 1'], [0.42323, 'url 2'], [0.456234, 'url 3'], [0.456234, 'url 4']); my $max; my @url; foreach(@pairs) { if(!defined $max or $max < $_->[0]) { $max = $_->[0]; @url = $_->[1]; } elsif($max == $_->[0]) { # caution: exact identity with floating point numbers is rare, so this might disappoint a little push @url, $_->[1]; } } use Data::Dumper; print Dumper (\@url);