2012-02-29 74 views

回答

2

$ req_msg =〜s/\ $ {$ toReplace}/$ replacementments - > {$ toReplace}/g;

s用於替代。 $content=~ s/old_value/new_value/modifier;(調節劑可以是I,G,X,沿着或組合)

例:

$content = "Hi I am a coder and I like coding very much!"; 
$content =~ s/i/eye/i; 

現在$內容將包含 「海耶的眼睛是一個程序員和眼睛一樣的編碼非常」

以同樣的方式,$ {$ toReplace}簡單地表示一個標量引用,它是舊值,需要替換,$ replacements - > {$ toReplace}表示$ replacements是一個哈希引用,其鍵爲$ toReplace。 它對$ hash_value = hash_ref - > {key};

徘徊無論它找到標量參考返回的值,獲取通過在$ 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"; 

請看第二行!

+1

感謝您的回覆 – Balakrishna 2012-02-29 10:48:08

+0

我的榮幸balakrishna – Jassi 2012-06-18 17:37:26

4

先決條件對於這項工作有兩個變量:

  • $toReplace - 包含一個任意值
  • $replacements - 包含,ERM一個HASH裁判,更換

鑑於$toReplace包含「富」,$req_msq的內容被搜索${foo}(與領先的單個空間)機智h每次發生這個被替換爲$replacements->{foo}

+0

我認爲它會尋找'$ {foo}',而不是'$ foo'。 – Qtax 2012-02-29 08:49:00

+0

當然,@ Qtax。它被糾正了。 – 2012-02-29 08:54:03

0

它替換無論是存儲在哈希參考$replacements用鑰匙blabla文本${blabla}的每一次出現,例如:

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

將盡一切${blabla}$req_msg被取代blubb

相關問題