in reply to Sorting path like strings
I’d use a GRT variant.
use List::Util qw( max ); my @padded = do { my @copy = @path; my @segment_length; while( 1 ) { my $len = max map { s!([^/]*/|[^/]+)!! ? length( $1 ) : -1 } @ +copy; last if $len == -1; push @segment_length, $len; } my $format = join '', map "%${_}s", @segment_length; map {; no warnings 'uninitialized'; sprintf $format, split m!/!, $_, -1; } @path; }; @path = @path[ sort { $padded[ $a ] cmp $padded[ $b ] } 0 .. $#padded +];
Makeshifts last the longest.
|
|---|