.
.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";
}
}
}