my %hash; foreach my $n (@names){ my $r = int(rand($range))+$min; $hash{$n}=$r; } my @names_by_val = sort { $hash{$a} <=> $hash{$b} } keys %hash;