use Data::Dumper; my $count = 1; foreach my $server (@{$servers->{server}}) { print "\nCount: ", $count++, "\n"; my $brlan = $server->{BRLAN} ; print "brlan = $brlan\n"; next unless $brlan eq "y"; my $brip = $server->{BR_IP}; my $num = $server->{CoreLanNum}; my $corebrip = $server->{'CoreLanIP_'.$num.'__1'} ; my $brmask = $server->{'CoreLanNetmask_'.$num}; my @brnwlist; for my $n (1..$num){ $corebrip = $server->{'CoreLanIP_'.$n.'__1'} ; if (not $corebrip) { print "CoreLanNum $n - No value for CoreLanIP_".$n."__1\n"; next; } print "CoreLanNum $n - brip: $brip, corebrip: $corebrip\n"; $brmask = $server->{'CoreLanNetmask_'.$n}; if ( $corebrip eq $brip ){ my $brlist = join ("/", $brip, $brmask) ; $brlist =~ s/.[0-9]*\//.0\//g; push( @brnwlist, $brlist) unless $seen{$brlist}++; } else { print "coreip does not match brip\n"; } } print "brnwlist: ", Dumper(\@brnwlist); next if @brnwlist; my @vnwlist; my $vnum = $server->{CoreVlanNum}; for my $i (1..$vnum){ my $vlanip = $server->{'CoreVlan_IP_'.$i}; if (not $vlanip) { print "CoreVlanNum $i - No value for CoreVlan_IP_$i\n"; next; } print "CoreVlanNum $i - brip: $brip, vlanip: $vlanip\n"; my $vmask = $server->{'CoreVlan_Netmask_'.$i}; if ($vlanip eq $brip){ my $vlist = join ("/", $brip, $vmask) ; $vlist =~ s/.[0-9]*\//.0\//g; push(my @vnwlist, $vlist) if ! $seen{$vlist}++; } else { print "vlanip does not match brip\n"; } } print "vnwlist: ", Dumper(\@vnwlist); }