2012-02-29 5 views

答えて

2

$ 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行目を参照してください。

+1

応答ありがとう – Balakrishna

+0

私の喜びbalakrishna – Jassi

4

前提条件は、2つの変数です:

  • $toReplace - 任意の値
  • $replacements含まれています - えーと、含むハッシュリファレンス、代替

$toReplaceが含ま考えます"foo"の場合、$req_msqの内容は${foo}(先行シングルスペース)で検索されますhのすべての出現は$replacements->{foo}に置き換えられます。

+0

私は '$ {foo}'ではなく '$ {foo} 'を探していると思います。 – Qtax

+0

もちろん、@ Qtax。それが修正されました。 –

0

それは例えば、キーblablaとハッシュリファレンス$replacementsに格納されているもので、テキスト${blabla}のあらゆるのoccuranceを置き換える:

$replacements = { 'blabla' => 'blubb' }; 

は、すべての${blabla}$req_msgblubbによって置き換えられているようになります。

関連する問題