3

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

#!perl -i.bak

在 Windows 上使用 Activestate perl,我已经创建了与 .pl 的关联,我可以直接从命令行运行 perl 脚本。

myScript.pl

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

4

2 回答 2

5

听起来像一个技巧问题,我想知道我是否理解你的正确。

perl -pi.bak myScript.pl myfiletochange

只需调用 perl,提供开关和脚本名称,然后就可以了。

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

$^I = ".bak"; # will set backup extension
于 2012-03-28T13:55:13.170 回答
0

由于您将使用脚本,因此您可能想要执行以下操作:

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

于 2013-01-14T16:44:01.350 回答