使用 Perl,我正在解析一个文本文件并想找到一个关键字和文件名,然后我需要打开该文件(它与正在解析的文件位于同一目录中),从中获取文本并插入它比赛结束后。
file1 = 正在解析的文件
file2 = 要包含的文件
开头的两个文件示例:
file1
code code code
%include file2;
code code code
file2
(* a bunch of header information *)
function ( arg : type);
我希望 file1 看起来像什么:
file1
code code code
(*%include file2;*)
(* a bunch of header information *)
function ( arg : type);
code code code
我需要帮助开发 perl 来执行此替换。
我写了以下内容,它将文件解析并将其作为字符串读取。我想保留这种方法,因为我已经使用它实施了几次替换,但其余的是开放季节。我也喜欢理解事物,因此如果您不介意对提交的解决方案进行简要说明,我们将不胜感激。
#keep this part
open FILEHANDLE, "<", $file or die $!;
$string = do { local $/; <FILEHANDLE> };
#several other replace operations here already written
$string ~= s/match/replace;
#can rewrite this to be anything that works well
#match the include tag
if ($string =~ m/^%include\s+'(\w+).(PRO)'/gi)
{
#build the replace string
my $includefile = $1.'.'.$2;
my $replacestring = "(* $& *) \n";
open my INCLUDEHANDLE, "<", $includefile or die $!;
$replacestring += do { local $/; <INLCUDEHANDLE> }
# I am lost at this point
}
#this is dirty but it works
#close file for read
close FILEHANDLE;
#open file for write
open FILEHANDLE, ">", $file or die $!;
print FILEHANDLE $string;
#close file for write
close FILEHANDLE;
Internet bro-fist 帮助清理我的文件读/写操作并在将其写入 file1 之前从 file2 的内容中剥离 (* header information *) ,如下所示:
file1
code code code
(*%include file2*)
function ( arg : type);
code code code