我需要在 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
此外,它已经提交/回滚之后,你有一个文件的所有更改的地方….