Perl在脚本中编辑

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

perl -p -es/<value>/<value>/ig 

将不适合这种情况。 如何从一个Perl脚本中获得相同的结果?

 open(CRONTAB, "+<file" || die "..."; while (<CRONTAB>) { if ($_ =~ /value/) { s/^\#+//; print "$_\n"; } } 

我的照片正在显示我想要的。 这只是我正在寻找的就地编辑。

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

但要小心: $^I喜欢perl的-i不是防撞的。

你的编辑看起来很简单。 你有没有考虑简单地使用sed与-i选项?

试试这个,基于perldoc perlrun中的-i的翻译:

 use strict; use warnings; my $filename = "something"; my $extension = '.orig'; while (<>) { my $backup; if ($extension !~ /\*/) { $backup = $filename . $extension; } else { ($backup = $extension) =~ s/\*/$filename/g; } rename $filename, $backup; open my $outfile, '>', $filename; select $outfile; s/^\#+// if /value/; } continue { print; # this prints to original filename } select STDOUT; 

使用File :: Inplace

此外,它已经提交/回滚之后,你有一个文件的所有更改的地方….