在unix / linux版本中,我只需更改第一行:
#!perl -i.bak
在Windows上使用Activestate perl,我在其中创建了与.pl的关联,我可以直接从命令行运行perl脚本。
myScript.pl
如果我仍想使用默认关联,如何进行文件的原位编辑?
答案 0 :(得分:5)
听起来像一个技巧问题,我想知道我是否理解你。
perl -pi.bak myScript.pl myfiletochange
只需调用perl,提供开关和脚本名称,然后离开。
现在,您可能不希望提供这些额外的参数。如果是这样,您只需设置the variable $^I
,即可激活就地编辑。 E.g:
$^I = ".bak"; # will set backup extension
答案 1 :(得分:0)
由于您将要使用脚本,您可能希望执行以下操作:
sub edit_in_place
{
my $file = shift;
my $code = shift;
{
local @ARGV = ($file);
local $^I = '';
while (<>) {
&$code;
}
}
}
edit_in_place $file, sub {
s/search/replace/;
print;
};
如果您要创建备份,请将local $^I = '';
更改为local $^I = '.bak';