%out = (); for (@in){ if (/^([A-Za-z_]+)(\d+)$/){ # build hash of arrays # with alpha part uppercase:original as key push @{$out{join ':',uc $1,$1}},$2; } else { warn "\nInput data error <$_>\n"; } }