【发布时间】:2010-11-05 01:43:42
【问题描述】:
我知道这种问题以前已经被问过很多次了。我之所以再次来到这里,是因为我觉得我错过了一些简单而基本的东西。
是否有可能使这种搜索替换例程更好。例如,没有两次打开同一个文件。也欢迎速度相关的建议。
请注意,这适用于多行匹配并替换多行字符串。
#!/bin/perl -w -0777
local $/ = undef;
open INFILE, $full_file_path or die "Could not open file. $!";
$string = <INFILE>;
close INFILE;
$string =~ s/START.*STOP/$replace_string/sm;
open OUTFILE, ">", $full_file_path or die "Could not open file. $!";
print OUTFILE ($string);
close OUTFILE;
【问题讨论】:
-
您似乎正在尝试就地编辑文件。也就是说,打开它既可以阅读也可以写作。对吗?
-
是的,正在编辑文件。这对我来说是最常见的用例。
-
我倾向于通用解决方案,但有时需要提醒我,对于这样的事情,它可能(并且现在是,今天!)值得在 IDE 中尝试它(例如,IntellJ 的 Find In Project + Find-and-Replace)与加速、试错和事后检查脚本解决方案。
标签: perl