私はこの表現の意味を理解したいと思います。仕事へのこのため誰もこの正規表現の意味を私に説明することができます
$req_msg =~ s/ \${$toReplace}/$replacements->{$toReplace}/g;
私はこの表現の意味を理解したいと思います。仕事へのこのため誰もこの正規表現の意味を私に説明することができます
$req_msg =~ s/ \${$toReplace}/$replacements->{$toReplace}/g;
$ req_msg =〜s/\ $ {$ toReplace}/$置換 - > {$ toReplace}/g;
sが置換に使用される。 $content=~ s/old_value/new_value/modifier;
(修飾子はG、Iすることができ、X、一緒にまたは組み合わせ)
例:
$content = "Hi I am a coder and I like coding very much!";
$content =~ s/i/eye/i;
今$コンテンツは、 "ヘイの目の午前は非常に多くのコーディングなどのコーダーと目"
が含まれています同じように、スカラー参照を単に意味する$ {$ toReplace}は、置換する必要のある古い値であり、$置換 - > {$ toReplace}は、$ replaceが、そのキーが$ toReplaceであるハッシュ参照であることを意味します。 $ hash_value = hash_ref - > {key}には分かりません。それはスカラー参照によって返された値を求めwhereever
は、$のreq_msg
で見つかった対応する値を持つハッシュリファレンスのキーで置き換えを取得しかし、私は、あなたが空白の交換を得たので、あなたがこの質問をしたと思います。スカラー参照の問題が原因である可能性があります。
このコードスニペットは疑問を取り除くのに役立ちます。
#!/usr/bin/perl
use strict;
use warnings;
my $value = "Jassi";
my $scalar_ref = \$value;
print "scalar_ref = $scalar_ref \n and value = $value and ${$scalar_ref}\n";
my %hash = ("Jassi", "aliencoders");
my $hash_ref = \%hash;
my $reg_msg = "Hi this is Jassi";
print "reg_msg = $reg_msg \n";
$reg_msg =~ s/${$scalar_ref}/$hash_ref->{${$scalar_ref}}/;
print "reg_msg after s = $reg_msg\n";
最後の2行目を参照してください。
前提条件は、2つの変数です:
$toReplace
- 任意の値$replacements
含まれています - えーと、含むハッシュリファレンス、代替を$toReplace
が含ま考えます"foo"の場合、$req_msq
の内容は${foo}
(先行シングルスペース)で検索されますhのすべての出現は$replacements->{foo}
に置き換えられます。
私は '$ {foo}'ではなく '$ {foo} 'を探していると思います。 – Qtax
もちろん、@ Qtax。それが修正されました。 –
それは例えば、キーblabla
とハッシュリファレンス$replacements
に格納されているもので、テキスト${blabla}
のあらゆるのoccuranceを置き換える:
$replacements = { 'blabla' => 'blubb' };
は、すべての${blabla}
が$req_msg
にblubb
によって置き換えられているようになります。
応答ありがとう – Balakrishna
私の喜びbalakrishna – Jassi