#!/usr/bin/perl use strict; use XML::Simple; use Net::Netmask; my @block; my %seen; my $xml = do {local $/='';} ; my $servers = XMLin($xml, ForceArray => 1); foreach my $server (@{$servers->{server}}) { my $br_ip = $server->{BR_IP}; my $num = $server->{CoreLanNum}; #print "Searching for $br_ip\n";; for my $n (1..$num){ my $ip = $server->{'CoreLanIP_'.$n.'__1'}; if ($ip eq $br_ip){ my $mask = $server->{'CoreLanNetmask_'.$n}; # do what you want here with $n $ip or $mask my $block = new Net::Netmask($ip,$mask); push @block,$block unless $seen{$block}++; } } } print $_."\n" for @block; __DATA__