c:\@Work\Perl>perl -wMstrict -le "use Test::More 'no_plan'; use Test::NoWarnings; ;; VECTOR: for my $ar_vector ( [ [ qw(fanfare apparate panacea parmesan albatross albacore false vermeil candelabra beans) ], [ qw(apparate fanfare panacea albatross albacore false parmesan candelabra beans vermeil) ], ], ) { my ($ar_unsorted, $ar_expected) = @$ar_vector; my @unsorted = @$ar_unsorted; note qq{input: @$ar_unsorted}; ;; my @sorted = map $_->[0], sort { $a->[1] cmp $b->[1] } map [ $_, join '', m{ [aeiou]+ }xmsg ], @unsorted ; is_deeply \@sorted, $ar_expected, qq{ST: @sorted}; ;; @sorted = map { (split m{ \x00 }xms)[1] } sort map join(qq{\x00}, join('', m{ [aeiou]+ }xmsg), $_), @unsorted ; is_deeply \@sorted, $ar_expected, qq{GRT: @sorted}; ;; is_deeply \@unsorted, $ar_unsorted, qq{input data unchanged}; } " # input: fanfare apparate panacea parmesan albatross albacore false vermeil candelabra beans ok 1 - ST: apparate fanfare panacea albatross albacore false parmesan candelabra beans vermeil ok 2 - GRT: apparate fanfare panacea albatross albacore false parmesan candelabra beans vermeil ok 3 - input data unchanged ok 4 - no warnings 1..4