my @split_arr = map { [ split /_/, $_, 3 ] } @array; my @sorted = sort { $a->[2] <=> $b->[2] } @split_arr; #### my @split_arr; for ( @array ) { my @split_elem = split /_/, $_, 3; push @split_arr, \@split_elem; } my @sorted = sort { $a->[2] <=> $b->[2] } @split_arr;