-1

Я пытаюсь вставить несколько строк между двумя конкретными строкой в 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 ответ1

0

Пожалуйста, объясните лучше, в чем проблема, которую вы заметили. Сам скрипт выполняет свою работу, просто создает сломанный XML. Это потому что:

1) У значения $ insert есть дополнительный набор кавычек («»), который нарушает XML

2) В строке пакета отсутствует закрывающий тег "->"

Если вы исправите это два, результирующий XML будет в порядке (если остальной исходный XML был в порядке).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .