Перевести строку в Perl - PullRequest
       2

Перевести строку в Perl

0 голосов
/ 20 февраля 2011

В PHP strtr может принять ввод массива и заменить все вхождения ключа в строке, и сначала будет пробоваться самый длинный ключ .

Есть ли в Perl эквивалентная функция?

Ответы [ 2 ]

7 голосов
/ 20 февраля 2011

Да, простое регулярное выражение:

# Where %h contains your key => value mappings
my $keys = join '|', sort {length($b) <=> length($a)} keys %h;
$a =~ s/($keys)/$h{$1}/g;
3 голосов
/ 21 февраля 2011

Вместо того, чтобы вручную создавать регулярное выражение для оценки, используйте функцию Data :: Munge list2re следующим образом:

my $re = list2re sort {length($b) <=> length($a)} keys %h;
$a =~ s/($re)/$h{$1}/g;
...