perl:修改原文件

perl:修改原文件

在网上看到这段代码:
#!/usr/bin/perl

use strict;

$^I="";
while(<>){
        s/^rate.*/rate=0/;
        s/^testMode.*/testMode=0/;
        print;
}


说 $^I 的值可以决定是要重写文件,还是备份文件,若要重写,只须将其值设为空就可,若要备份,则$^I=".bak", 他就会把改过的文件命名为filename.bak了

但我将 $^I=""; 并没有实现修改源文件,设成 $^I=".bak"; 没有bak文件生成,不知道怎么实现修改原文件?

贴上我的代码
#!/usr/bin/perl

use strict;
$^I = ".bak";
open (IN,"1.txt");
while (<IN>) {
    s/^rate.*/rate=0/;
    print IN;
}
close IN;
命令行不是可以么
perl -pi -e 's/xxx/yyy/g' xxx.txt
我有好多文件,不适合命令行
要修改的文件名必需在@ARGV中
$^I="";好像是不行啊,命令行中是可以的
你干脆建立一个tmp文件,然后把tmp文件覆盖原文件算了

open (IN,"1.txt");
print IN;
------------------------------
这么写就是错的

至于$^I,参考 perldoc perlrun
search -i
你明显猜错了。