#!/usr/bin/perl -- use strict; use warnings; my @magma = qw/ 39CE7A132F3CF 1E739E84CBCF3 339E84CBCF3C7 39CF4265E79E3 2739E84CBCF3C 339E84CBCF3C7 273D09979E78F 1CE7A132F3CF1 39E739E84CBCF 33CE73D09979E 3CE73D09979E7 279CE7A132F3C 339CF4265E79E 0E73D09979E78 /; use Sort::Key::Radix qw/ skeysort /; my @sortedIdx = skeysort { my $what = $_; warn "WHAT $what "; $what = $magma[$_] if not length $_ > length scalar @magma; return $what; } 0 .. $#magma ; use Data::Dump qw/ dd /; dd \@magma ; dd \@sortedIdx ; dd @magma[@sortedIdx]; __END__ $ perl what WHAT 0 at what line 23. WHAT 1 at what line 23. WHAT 2 at what line 23. WHAT 3 at what line 23. WHAT 4 at what line 23. WHAT 5 at what line 23. WHAT 6 at what line 23. WHAT 7 at what line 23. WHAT 8 at what line 23. WHAT 9 at what line 23. WHAT 10 at what line 23. WHAT 11 at what line 23. WHAT 12 at what line 23. WHAT 13 at what line 23. WHAT 39CE7A132F3CF at what line 23. WHAT 1E739E84CBCF3 at what line 23. WHAT 339E84CBCF3C7 at what line 23. WHAT 39CF4265E79E3 at what line 23. WHAT 2739E84CBCF3C at what line 23. WHAT 339E84CBCF3C7 at what line 23. WHAT 273D09979E78F at what line 23. WHAT 1CE7A132F3CF1 at what line 23. WHAT 39E739E84CBCF at what line 23. WHAT 33CE73D09979E at what line 23. WHAT 3CE73D09979E7 at what line 23. WHAT 279CE7A132F3C at what line 23. WHAT 339CF4265E79E at what line 23. WHAT 0E73D09979E78 at what line 23. [ "39CE7A132F3CF", "1E739E84CBCF3", "339E84CBCF3C7", "39CF4265E79E3", "2739E84CBCF3C", "339E84CBCF3C7", "273D09979E78F", "1CE7A132F3CF1", "39E739E84CBCF", "33CE73D09979E", "3CE73D09979E7", "279CE7A132F3C", "339CF4265E79E", "0E73D09979E78", ] [13, 7, 1, 4, 6, 11, 12, 2, 5, 9, 0, 3, 8, 10] ( "0E73D09979E78", "1CE7A132F3CF1", "1E739E84CBCF3", "2739E84CBCF3C", "273D09979E78F", "279CE7A132F3C", "339CF4265E79E", "339E84CBCF3C7", "339E84CBCF3C7", "33CE73D09979E", "39CE7A132F3CF", "39CF4265E79E3", "39E739E84CBCF", "3CE73D09979E7", )