. .cut . #### #!/usr/bin/perl -w use strict; use XML::Twig; my $router=$ARGV[0]; my $fname="$router.xml"; my $RoutersLastState = XML::Twig->new(); #Last received State ### Load Last State/s $fname="$fname.last"; $RoutersLastState->parsefile($fname); print "Loaded Last State\n"; my $RoutersCurrState = XML::Twig->new( TwigHandlers => { ifIndex => \&find_diff }, ); #Current State ### Load Current State $RoutersCurrState->parsefile($fname); print "Loaded Current\n"; my $outfname="$fname.changes"; open (FH,"> $outfname"); $RoutersCurrState->print(\*FH,'indented'); close (FH); exit; sub find_diff{ my( $twig, $ifindex)= @_; my $indexval=$ifindex->att('value'); # print "$indexval\n"; foreach my $oldindex ($RoutersLastState->root->first_child('router')->children('ifIndex')){ my $oldindexval=$oldindex->att('value'); print "$indexval\t$oldindexval \n"; if ($indexval eq $oldindexval){ $ifindex->cut; print "found one \n"; } } }