for $i (keys %data) {
push (@ips, $i);
for $j (keys %{$data{$i}{ports}}) {
# push (@names, $data{$i}{cname}); # <--wrong
push (@names, $data{$i}{$j}{cname});
}
}
# compare that with this code that uses logical names
# if also uses my to localise variable scope, strict compliant too
for my $ip (keys %data) {
push @ips, $ip;
for my $port ( keys %{$data{$ip}->{ports}} ) {
push @names, $data{$ip}->{$port}->{cname};
}
}
I recommend that you add this code to check your data structure after you build %data from the file (if you were using CGI::Simple you could just call the dump() method :-) but anyway:
# make %data
require Data::Dumper;
print $q->header;
print $q->escapeHTML(Dumper(\%data));
exit;
This will tell you if you have the correct data structure. I will tell you now with your current code you won't. I suspect there may be some serious logic errors in it. If you post a sample of the file I'll give you a hand to parse it into a logical data structure.
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|