use strict; use warnings; use XML::LibXML qw( ); die "Usage" if @ARGV != 3; my $parser = XML::LibXML->new(); my @counts; { my $doc = $parser->parse_file($ARGV[1]); my $root = $doc->documentElement(); @counts = map $_->textContent, $root->findnodes('elem'); } { my $doc = $parser->parse_file($ARGV[0]); my $root = $doc->documentElement(); for my $node ($root->findnodes('elem')) { die "Not enough counts" if !@counts; $node->appendText( $node->textContent() x (shift(@counts) - 1) ); } print $doc->toFile($ARGV[2]); } die "Too many counts" if @counts; #### my $new_text = $node->textContent() x shift(@counts); $node->removeChild($_) for $node->findnodes('text()'); $node->appendText($new_text);