基本上我想这样做:
#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$_ = "123 abc 456";
s/$search/$+{X} $+{X}/;
print;
类似的东西:
#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$replace = q($+{X} $+{X});
$_ = "123 abc 456";
s/$search/$replace/;
print;
结果应为123 abc abc 456
。
有可能吗?
需要将 $replace
维护为外部变量。所以,我不希望内容只是移动到另一个位置。我正在从文件中读取这些信息。
答案 0 :(得分:4)
想出来。我需要对表达式进行双重评估(感谢@Birei指向我的regex evaluate命令。仍然无法在perl文档中找到它但是...不得不谷歌。:()
所以它变成了:
#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$replace = q(qq($+{X} $+{X}));
$_ = "123 abc 456";
s/$search/$replace/ee;
print;
答案 1 :(得分:3)
尝试使用函数添加标志来评估替换部件,如下所示:
#!/usr/bin/env perl
$search = qr/(?<X>abc)/;
$replace = sub { qq($+{X} $+{X}) };
$_ = "123 abc 456";
s/$search/$replace->()/e;
print;
它产生:
123 abc abc 456