Вы можете использовать XML :: Twig следующим образом:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $t= XML::Twig->new( twig_roots => { book => \&book },
pretty_print => 'indented',
)
->parsefile( 'books.xml');
sub book
{ my( $t, $book)= @_;
my $isbn= $book->field( 'isbn');
if( $isbn eq 'Book3ISBN')
{ $book->cut->print_to_file( "$isbn.xml"); }
else
{ $t->flush; }
}
Это предполагает, что вы выбираете книгу для извлечения на основе ее ISBN, и что вы хотите вывести исходный файл без этой книги.
Если критерий является чем-то другим, то настройте тест в book
.
Если вы не хотите прикасаться к исходному файлу, удалите вызов cut
и замените flush
на purge
(эти методы отбрасывают предыдущие элементы в дереве, поэтому вы не используете слишком много памяти, если исходный файл мал, значит он вам не нужен)