首页 > 解决方案 > perl 正则表达式从一个文件中提取以用于变量

问题描述

我有一个文件在一行中包含搜索和替换字符串。

我正在阅读该文件,使用 split 分隔搜索和替换字符串并将其应用于变量。


文件:

(.*) pre_$1

Perl 代码:

$str = "a";

$line = < FILEHANDLE>; # Read above file.Contains (.*) pre_$1

my ($ss,$rs) = split /\s/,$line;

$str =~ s/$ss/$rs/ee;

这似乎不起作用。

我试图在网上查看,一个结果很接近,即将替换字符串用单引号和双引号括起来。

IE:

$rs = '"pre_$1"';

如果它在脚本中,这有效,但如果我从文件中读取,我会看到任何替换。

有人可以指出我在这里做错了什么吗?

谢谢。

标签: regexperl

解决方案


s//$rs/ee期望$rs包含有效的 Perl 代码。pre_$1不是有效的 Perl 代码。期望用户提供 Perl 代码是一个非常糟糕的主意。

解决方案:

use String::Substitution qw( gsub_modify );

gsub_modify($str, $ss, $rs);

推荐阅读