在unix/linux版本中,我只需更改第一行:
#!perl -i.bak
在windows上使用Activestate perl,在那里我已经创建了与.pl的关联,我可以直接从命令行运行perl脚本。
myScript.pl
如果我仍然想使用默认关联,如何对文件进行就地编辑?
听起来像是一个技巧性的问题,我想知道我是否理解正确。
perl -pi.bak myScript.pl myfiletochange
只需调用perl,提供开关和脚本名称,就可以开始了。
现在,您可能不想提供这些额外的参数。如果是这样,您可以简单地设置变量$^I
,它将激活就地编辑。例如:
$^I = ".bak"; # will set backup extension
由于您将要使用脚本,您可能需要执行以下操作:
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';