perl 脚本在特定字符串后插入多行

perl 脚本在特定字符串后插入多行

我正在尝试在 perl 中的两个特定行之间插入多行。但我的代码存在一些问题,我无法解决。

open(FILE,"abc7.xml") || die "Can't open file: $!";
 undef $/;
 my $file = <FILE>;

 # Set strings to find and insert
 my $first_line = "<conf-front>";
 my $second_line = "<conf-proc-meta>";
 my $insert = "'<!--Delivery Date:11\/30\/2013-->\n<!--XML Script: 1111.22.3333-->\n<!--Batch:abcdef >'";

 # Insert our text
 $file =~ s/\Q$first_line\E\n\Q$second_line\E/$first_line\n$insert\n$second_line/;

 # Write output to output.txt
 open(OUTPUT,">output.txt") || die "Can't open file: $!";
 print OUTPUT $file;
 close(OUTPUT);

答案1

请更好地解释您注意到的问题。脚本本身完成了它的工作,只是创建了损坏的 XML。这是因为:

1) $insert 值有一组额外的引号(“'”),这会破坏 XML

2)批处理行缺少结束标记“-->”

如果您修复了这两个问题,那么生成的 XML 就应该没问题(如果原始 XML 的其余部分都没问题的话)。

相关内容