2012-02-29 66 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

相关问题