![perl 脚本在特定字符串后插入多行](https://linux22.com/image/1387428/perl%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%90%8E%E6%8F%92%E5%85%A5%E5%A4%9A%E8%A1%8C.png)
我正在尝试在 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 的其余部分都没问题的话)。