Perl:简单的搜索和替换问题

时间:2011-09-21 18:30:30

标签: perl

我在Windows 7上使用ActiveState perl 5.12.4。我正在尝试执行搜索并替换...

print "selected dir: $selected_dir basedir: $baseTestDir\n";
$selected_dir =~ s/$baseTestDir//g; 

$selected_dir = "\home\selenium\projects\myco\AutomatedTests\MyCliUSA\Critical Path\Live\G Sedan"$baseTestDir = "\home\selenium\projects\myco\AutomatedTests\MyCliUSA"的位置。但是,在搜索和替换语句之后,$selected_dir保持不变。如何在此处正确实施搜索和替换?

3 个答案:

答案 0 :(得分:4)

您没有将$baseTestDir中的文本转换为正则表达式模式。这可以使用quotemeta

my $base_test_dir_pat = quotemeta($base_test_dir);
$selected_dir =~ s/^$base_test_dir_pat//;

也可以通过\Q..\E在双引号和类似的字符串文字中访问它。

$selected_dir =~ s/^\Q$base_test_dir\E//;

可以省略尾随\E

$selected_dir =~ s/^\Q$base_test_dir//;

答案 1 :(得分:-1)

你需要逃避'\'。

  

$baseTestDir =~ s/\\/\\\\/g;

更换前。

答案 2 :(得分:-2)

我会编写以下内容来将selected_dir替换为baseTestDir:

    $selected_dir =~ s/$selected_dir/$baseTestDir/;