在 unix/linux 版本中,我只需更改第一行:
#!perl -i.bak
在 Windows 上使用 Activestate perl,我已经创建了与 .pl 的关联,我可以直接从命令行运行 perl 脚本。
myScript.pl
如果我仍想使用默认关联,如何就地编辑文件?
在 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';