2012-09-16 3 views
0

나는 perl에서 다음을 사용하려고하는데 작동하지 않는 것 같습니다. 문자열을 보간하지 않고 정확한 문자열을 어떻게 일치시킬 수 있습니까? 나는 따옴표를 시도하고 \ Q \의 E 아무것도하지만이 명확성을 위해perl subtitute의 정확한 문자열

$string=~ s/\`date +%s\`/anotherthinghere/; 

작동, 내가 일치하도록 노력하고 문자열

`date +%s` 

아, date +%s 변수에 있음을 언급하는 것을 잊었다입니다.

답변

3

당신이 말한 것에서는 `date +%s`이고, 역 따옴표는 마율로 먹었습니다

그런 경우이 코드는 원하는대로 할 것입니다. 변수 보간 전에 내가 잘못하고 있었다의 \ Q와 \의 E 내부의 역 인용 부호를 탈출 한 어떤 특수 문자

use strict; 
use warnings; 

my $string = 'xxx `date +%s` yyy'; 

my $pattern = '`date +%s`'; 

$string =~ s/\Q$pattern/anotherthinghere/; 

print $string; 

출력

xxx anotherthinghere yyy 
+0

의 해석, 첫번째을 수행합니다. 나는 그들을 제거하고 효과가 있었다. 감사. – MinaHany

2

나는 당신의 질문을 이해한다면 방법 :

my $var = q/`date +%s`/; 
my $string = q/foo `date +%s` bar/; 
$string =~ s/\Q$var/another/; 
say $string; 

출력 : 당신은 당신이 원하는 정확히 한, \Q .. \E 지정자를 잘못 사용해야합니다

foo another bar 
관련 문제