2012-02-29 3 views
0

내가 의미하는이 표현을 이해하려는 뜻이 정규식을 설명 할 수 있습니다. 작업이 대는 사람이 나에게

$req_msg =~ s/ \${$toReplace}/$replacements->{$toReplace}/g; 

답변

2

$ req_msg = ~ s/\ $ {$ toReplace}/$ replacement-> {$ toReplace}/g;

들 교체를 위해 사용된다.

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

지금 $ 내용

"Heye 눈이 매우 코딩과 같은 코더와 눈이다"포함됩니다 $content=~ s/old_value/new_value/modifier;

예 (수정 난, g, 함께 또는 조합 X 될 수 있습니다) > {$ toReplace} $ 대체는 그 키 $ toReplace 인 해시 참조 수단 - 동일한 방법 $ 단순히 스칼라 기준 수단 {$ 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"; 

마지막 두 번째 줄을 참조하십시오!

+1

응답 주셔서 감사합니다 – Balakrishna

+0

내 기쁨 balakrishna – Jassi

4

필수 두 변수 :

  • $toReplace - 임의의 값
  • $replacements 포함 - ERM 함유 해시 REF, 교체

$toReplace 포함 감안 "foo는"$req_msq의 내용 (주요 단일 공간) ${foo}를 검색 재치 이 모든 경우는 $replacements->{foo}으로 바뀝니다.

+0

나는 그것을'$ {foo는}'이 아닌'$의 foo' 찾고있을 거라고 생각해. – Qtax

+0

물론, @ Qtax. 수정되었습니다. –

0

그것은 모든 ${blabla}$req_msgblubb으로 대체 할 것입니다 키 blabla으로 해시 참조 $replacements에 저장되어있는 어떤로 텍스트 ${blabla} 나타날 때마다, 예컨대 :

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

을 대체합니다.

관련 문제