@a = ( ["oops", 1], ["oops", 0], [ "happy", 2 ], [ "word", 4 ] ); @a = sort my_sort @a; foreach $ar (@a) { print "$ar->[0] is $ar->[1]\n" } sub my_sort { # Lets first compare element 0 if ($a->[0] lt $b->[0]){ return -1; } if ($a->[0] gt $b->[0]){ return 1; } # Element 0 is equal, let now compare element 1 if ($a->[1] < $b->[1]){ return -1; } if ($a->[1] > $b->[1]){ return 1; } # Both elements are equal return 0; }