3

私はハッシュとして翻訳の辞書を持っています:

my %dict = { hello => 'hola', goodbye => 'adios' , ... }

(実際のユースケースは、人間の言葉による翻訳ではありません! 大量のトークンを他の値に置き換えています。これは単なる例です。)

これらのそれぞれを文字列に適用するにはどうすればよいですか? 明らかに、それらをループしてそれぞれを渡すことができますs/$key/$value/が、検索または置換が(たとえば)含ま/れている場合に壊れないように、それらを引用する必要があります。

PHP にstrtr($subject, $replacement_pairs_array)は - Perl に似たようなものはありますか?

4

3 に答える 3

3
%dict = ( 'hello' => 'hola', 'goodbye' => 'adios' );
my $x="hello bob, goodbye sue";
my $r=join("|",keys %dict);
$x=~s/($r)/$dict{$1}/ge;
print $x;

これは、その方法の 1 つを示しています。

ハッシュ キーを代替の正規表現、つまり "hello|goodbye" に変換し、その式と一致するものを探し、見つかったキーを使用してハッシュ内の値を検索します。g フラグを使用すると、正規表現は文字列にグローバルまたは繰り返し適用され、e フラグを使用すると、置換式はリテラル置換ではなく perl として評価されます。

于 2013-07-11T15:10:53.850 に答える
1

これを行うCPANモジュールがあるようです

于 2013-07-11T15:09:11.297 に答える