程序中的字符串替换

时间:2013-06-18 04:50:17

标签: string perl

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

所以让我说我有这个:

my $replacementVar = "replace";

my $originalString = "string to be replaced";

使用替换var

替换原始字符串的所有实例

运行original.pl

这可以在不修改original.pl的情况下完成,因为我可以在运行时对字符串进行临时更改,以便字符串在运行完之后恢复为默认值吗?

我应该注意,我无法进入并更改original.pl

的任何代码

1 个答案:

答案 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 $@;