my @data = ( { name => 'john', score => '70' }, { name => 'peter', score => '90' }, { name => 'dan', score => '50' }, ); my @new = sort { $a->{score} <=> $b->{score} } @data; print "$_->{'name'}\t$_->{'score'}\n" for (@new);