Updated: added missing declaration per trippledubs's report below.
A somewhat more optimal version that avoids multiple greps and re-testing of some conditions:
#! perl -slw use strict; my @data = qw[ alpha bravo charlie delta east echo exit foxtrot golf hotel india +juliet kilo lima mike november oscar papa quebec romeo sierra tango uniform victor whisk +ey xray yankee zulu ]; my @sortedData; my( @rindex, @eindex, @oindex ); push @{ $data[ $_ ] =~ m[r] ? \@rindex : $data[ $_ ] =~ m[^e] ? \@eind +ex : \@oindex }, $_ for 0 .. $#data; my @rsorted = sort{ $data[ $a ] cmp $data[ $b +] } @rindex; my @esorted = sort{ substr( $data[ $a ], 2, 1 ) cmp substr( $data[ $b +], 2, 1 ) } @eindex; my @osorted = sort{ substr( $data[ $b ], -1 ) cmp substr( $data[ $a +], -1 ) } @oindex; @sortedData[ @rindex, @eindex, @oindex ] = @data[ @rsorted, @esorted, +@osorted ]; print for @sortedData;
In reply to Re^2: How to perform different sorts on multiple sections of items in the same array (optimised)
by BrowserUk
in thread How to perform different sorts on multiple sections of items in the same array
by estreb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |