2016-01-05 91 views
1

我正在嘗試替換部分字符串。目前我使用一個簡單的方法如下:Perl:替換帶/不帶「+」號的字符串

my $text = $ARGV[0]; 
my $in_d = $ARGV[1]; 
my $out_d = "Sample_text"; 

$text =~ s/$in_d/$out_d/; 

上面的代碼似乎並沒有工作,如果有涉及到「+」號。 例如爲代碼:

my $text = "I+here starving here"; 
my $input_d = "I\+here"; 
my $out_d = "I"; 
$text =~ s/$input_d/$out_d/; 
print $text."\n"; 

輸出:

I+here starving here 

如何確保該文本被替換,無論人物的參與?感謝您的幫助提前。

回答

2

使用\Q,\E序列來轉義字符塊。

\Qfoo+\E 

所以,這將是

$text =~ s/\Q$input_d\E/$out_d/; 

DEMO

+0

感謝您的幫助!這工作。 –

+0

您也可以使用函數[quotemeta](http://perldoc.perl.org/functions/quotemeta.html)獲得相同的效果。 – Novice