Perl 在脚本中就地编辑

Sha*_*son 3 regex perl

我需要perl 脚本中就地编辑一个文件,所以经常使用一个班轮:

perl -p -e s/<value>/<value>/ig 
Run Code Online (Sandbox Code Playgroud)

不适用于这种情况。如何从 perl 脚本中获得相同的结果?

open(CRONTAB, "+<file" || die "...";

while (<CRONTAB>) { 
   if ($_ =~ /value/) {  
      s/^\#+//;  
      print "$_\n";  
   }  
}
Run Code Online (Sandbox Code Playgroud)

我的印刷品正好显示了我想要的东西。这只是我正在寻找的就地编辑。

geo*_*car 5

do {
  local $^I='.bak'; # see perlvar(1)
  local @ARGV=("file");
  while(<>){
    s/<value>/<value>/ig;
    print;
  }
};
Run Code Online (Sandbox Code Playgroud)

不过要小心:$^I就像 perl 一样,-i它不是防撞的。