我需要匹配下面的文件模式。以下是我需要搜索的行。
将苹果放入a / b / list.txt
以下是我的Perl代码的核心部分
my $r_path ="a";
while ($line=<FH1>)
chomp ;
if($line=~/getting\s*apples\s*in\${r_path}.*\/(\w*)\.txt/)
即使简单似乎很奇怪,当我删除变量并给出硬编码值搜索似乎也有效。但是定义了r_path变量,它不起作用。
请让我知道这个问题。我也注意到这个模式在我的vim / regex中检测到变量被替换为它们的正确值。但是在perl中,似乎即使在这个替换之后也不起作用。
答案 0 :(得分:2)
$
不应该被转义 - 你不想要它的特殊含义 - 并且在$
之前缺少空格。
my $r_path = "a";
my $line = 'getting apples in a/b/list.txt';
if ($line =~ /getting\s*apples\s*in\s*${r_path}.*\/(\w*)\.txt/) {
print "<<$1>>\n"; # list
}