#! perl -slw use strict; my @data = map{ [ map{ int rand 4 } 1 .. 6 ] } 1 .. 20; my @sorted = map { $_->[1] } sort { $b->[0] <=> $a->[0] } map { my $n = unpack 'N', pack 'B32', reverse join '', map{ scalar reverse unpack 'b2', pack 'C*',$_ } @$_ ; [ $n, $_ ] } @data; print "@$_" for @sorted; __END__ P:\test>503446.pl 3 3 2 3 3 3 3 3 2 3 1 0 3 2 1 2 2 1 3 1 3 3 1 0 3 0 3 1 2 2 3 0 0 2 1 3 2 2 1 1 2 1 2 1 3 3 3 0 2 0 0 3 0 3 2 0 0 2 1 0 1 3 3 3 2 1 1 3 1 0 1 2 1 2 1 0 1 1 1 0 3 1 2 2 1 0 0 1 2 1 0 1 3 1 2 3 0 1 1 3 3 0 0 1 0 3 3 1 0 0 0 3 3 2 0 0 0 3 1 3