0

我有一个 perl 脚本 (new.pl) 需要运行不同 perl 脚本 (old.pl) 的实例。我遇到的问题是,我想替换 old.pl 脚本中某个字符串的所有实例,而不需要修改它或创建一个包含对其所做更改的新文件。

所以假设我有这个:

my $replacementVar = "replace";

my $originalString = "string to be replaced";

做一些事情来用替换 var 替换原始字符串的所有实例

运行 original.pl

是否可以在不修改 original.pl 的情况下完成此操作,例如我可以在运行时对字符串进行临时更改,以便字符串在完成运行后恢复为默认值?

我应该注意,我不能进入并更改 original.pl 的任何代码

4

1 回答 1

3

一种可能的方法是使用eval

use strict;
use warnings;
my $replacementVar = "replace";
my $originalString = "string to be replaced";
open my $olds, "<", "old.pl" or die("$!");
my $contents = join("", <$olds>);
close $olds;
$contents =~ s/\Q$originalString/$replacementVar/g;
local @ARGV=('param1', 'param2');
eval "$contents; 1" or die $@;
于 2013-06-18T05:36:01.900 回答