В PHP strtr может принять ввод массива и заменить все вхождения ключа в строке, и сначала будет пробоваться самый длинный ключ .
strtr
Есть ли в Perl эквивалентная функция?
Да, простое регулярное выражение:
# Where %h contains your key => value mappings my $keys = join '|', sort {length($b) <=> length($a)} keys %h; $a =~ s/($keys)/$h{$1}/g;
Вместо того, чтобы вручную создавать регулярное выражение для оценки, используйте функцию Data :: Munge list2re следующим образом:
my $re = list2re sort {length($b) <=> length($a)} keys %h; $a =~ s/($re)/$h{$1}/g;