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

如何在windows上使用perl进行就地编辑(-I)?,windows,perl,inplace-editing,Windows,Perl,Inplace Editing,在unix/linux版本中,我只需更改第一行: #!perl -i.bak 在windows上使用Activestate perl(我在windows上创建了与.pl的关联),可以直接从命令行运行perl脚本 myScript.pl 如果我仍然想使用默认关联,如何进行文件的就地编辑?听起来像是一个技巧性的问题,我想知道我是否理解你的意思 perl -pi.bak myScript.pl myfiletochange 只需调用perl,提供开关和脚本名,然后就可以了 现在,您可能不想提供这

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

#!perl -i.bak
在windows上使用Activestate perl(我在windows上创建了与.pl的关联),可以直接从命令行运行perl脚本

myScript.pl

如果我仍然想使用默认关联,如何进行文件的就地编辑?

听起来像是一个技巧性的问题,我想知道我是否理解你的意思

perl -pi.bak myScript.pl myfiletochange
只需调用perl,提供开关和脚本名,然后就可以了

现在,您可能不想提供这些额外的参数。如果是这样,您可以简单地设置,这将激活就地编辑。例如:

$^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;
};
就地子编辑
{
我的$file=shift;
我的$code=shift;
{
local@ARGV=($file);
本地$^I='';
而(){
&$code;
}
}
}
编辑\u in\u place$文件,子文件{
s/搜索/替换/;
印刷品;
};

如果要创建备份,请更改
local$^I=''
本地$^I='.bak'

无技巧-为非技术用户创建脚本,并希望它是独立的。谢谢。@chris您的非技术用户应该知道,当脚本保存备份时,每次在源文件上使用脚本时,备份都会被覆盖。他们都说这是一次性的。:)@克里斯,在下次之前这只是一次而已=P