Tried this below but I get a 0 file and this error. print() on unopened filehandle OUT at C:/Perl/site/lib/XML/Twig.pm line 3036.
!c:\perl\bin\perl.exe
use strict; use XML::Twig;
my $upd_file = "updev.xml" ; my $main_file = "main.xml" ;
get the info we need by loading the update file
my $t_upd= new XML::Twig();
$t_upd->parsefile( $upd_file);
my $upd_dev_id = $t_upd->root->next_elt( 'DEVNUM')->text; my $upd_dev = $t_upd->root->next_elt( 'DEVS'); my $upd_seg = $t_upd->root ;
now process the main file
my $t= new XML::Twig( TwigHandlers => { DEVS => \&DEVS, }, PrettyPrint => 'indented', ); $t->parsefile( $main_file); $t->flush; # don't forget or the last closing tags won't be printed
open( OUT, ">$main_file") or die "cannot open out file main_file:$!";
sub DEVS
{ my( $t, $DEVS)= @_;
# just replace devs if the previous dev_id is the right one
if( $DEVS->prev_elt( 'DEVNUM')->text eq $upd_dev_id) {
$upd_dev->replace($DEVS);
}
$t->flush(*OUT) ; # print and flush memory so only one dev is in there at once
}
close OUT ;