my %codes = ( ABC => 0, DEF => 1, GHT => 2 ); my $alternation = join('|', keys %codes); my $substitution = qr/($alternation)/; while () { s/$substitution/$codes{ $1 }/g; print; }