我怎样才能在Windows上用perl进行就地编辑(-i)?

在unix / linux版本中,我只需更改第一行:

#!perl -i.bak 

Windows上使用Activestate perl,我已经创build了与.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';