my @new_list = map { $_->[0] } sort { $b->[1] cmp $a->[1] } map { ( my $s = $_ ) =~ s/\[(\d+)/sprintf('%010d%s', length($1),$1)/eg; [ $_, $s ] } @split_list; print "@new_list\n";