@sorted = map { $_->[0] } sort { $a->[2] <=> $b->[2] or $a->[3] <=> $b->[3] or $a->[1] cmp $b->[1] map { [ $_, /^(.+?)(\d+)#(\d+)$/ ] } @unsorted;