我有一个perl脚本(new.pl)需要运行不同perl脚本的实例(old.pl)。我遇到的问题是我想要在old.pl脚本中替换某个字符串的所有实例而不修改它,或者必须创建一个包含对其进行更改的新文件。
所以让我说我有这个:
my $replacementVar = "replace";
my $originalString = "string to be replaced";
使用替换var
替换原始字符串的所有实例运行original.pl
这可以在不修改original.pl的情况下完成,因为我可以在运行时对字符串进行临时更改,以便字符串在运行完之后恢复为默认值吗?
我应该注意,我无法进入并更改original.pl
的任何代码答案 0 :(得分: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 $@;