#!/usr/bin/perl -w use strict; $|++; my @names_marks = ( 'cliff 76', 'john 52', 'keith 90', 'rob 52' ); my %hash = map { split } @names_marks; my @sorted_names = sort { $hash{$b} <=> $hash{$a} } keys %hash; print $hash{$_},' ',$_,$/ for @sorted_names; #### foreach (@names_marks) { ($names[$_], $marks[$_]) = split / /, $_; $hash{"$marks[$_]".$names[$_]} = ucfirst($names[$_]). " " . $marks[$_]; }