##
@sorted =
map { $_->[0] }
sort { $a->[2] <=> $b->[2] or $a->[3] <=> $b->[3] or $a->[1] cmp $b->[1]
map { [ $_, /^(.+?)(\d+)#(\d+)$/ ] }
@unsorted;
####
use Sort::Fields;
my $sorter = make_stable_fieldsort( '(\d+)#', [ '2n', '3n', '1' ] );
my @sorted = $sorter->( @unsorted ); # voila