2010-10-03 45 views
2

我正在尝试搜索并用变量替换。在这种情况下,我从前一场比赛中拉出的变量。这里是我的代码:如何在正则表达式中使用Perl变量?

$fileContentToAlter =~ s/$2/$1/g; 

现在我在这种状态下实现的,它被错误地解读为$有一个正则表达式的内部它本身的意义。我在网上做了一些搜索,然后阅读双引号可以解决这个问题,因为它会内插,但这看起来并不适合我。我不会说谎,这是一项家庭作业,所以我不期待一个单一的答案。只是在正确的方向推动。

+0

捕获变量是多余的,完全可以避免的:'我的($此,即$)= $ match_me =〜/(capture_this)(capture_that)/;' – daxim 2010-10-03 08:45:48

+0

不错,我甚至没有想到这一点。我不得不将自己的头围绕perl,因为它与我以前处理的不同。但我真的很喜欢它。 – Pinsickle 2010-10-08 03:57:45

回答

5

避免'$ 1'和'$ 2',因为它们是正则表达式元字符。

use strict; 
use warnings; 

my $val1 = "abc"; 
my $val2 = "def"; 
while (<>) 
{ 
    s/$val1/$val2/g; 
    print; 
} 
+0

感谢您的帮助。我开始怀疑我是否应该创建一个变量来分配我的$ 1和$ 2结果。 – Pinsickle 2010-10-03 02:04:54