如何在windows上使用perl进行就地编辑(-I)



在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';

相关内容

  • 没有找到相关文章

最新更新