To shorten "A2990_duallayerA_1" when "A2990_duallayer_1" is also present would require removing from the middle of the word, and that goes against your examples. You didn't specify your spec, so I had to guess a lot.
To handle this case, you could consider a lowercase followed by an uppercase to be a word break. Change
if ($key =~ /^[a-zA-Z]\z/) {
to
if ( $key =~ /^[a-z]\z/
|| $key =~ /^[A-Z]\z/ && $flux !~ /[a-z]\z/
) {
You get:
A2990_duA_1
A2990_du_1
A2990_du_2
A2990_du_3
A2990_du_4
A2990_du_5
A2990_du_6
A2990_du_7
A2990_du_8
A2990_du_9
A2990_du_10
LXP_01
LXP_02
...
Fixed in original code.
|