#!/usr/bin/perl -w use Data::Dumper; $Data::Dumper::Indent = 1; @vals = qw( 1 2 3 1 3 3 3 43 bob 2 bob 6 2 ); my @sorted = sort { $#$b <=> $#$a or $a cmp $b } keys %{{ map { @$_ = ( @$_, $_ ); $_ => 1 } @vals }}; print Data::Dumper->Dump([\@sorted], ['*sorted']);