Hello all,

I have written a small script which uses Net::Whois::IP; and it
seems to work fine, but in attempt to make the script more 
efficient, I've stumbled upon something that I don't understand.

First of all, the purpose of the script is to take a list
of IPs and check their IP registrations. Actually the list of IPs
is in CIDR format, but I just schwick off the CIDR notation and 
use whats left. So my list input looks like the following 
(for the sake of prudence this example is using reserved space
rather than registered--but just to give an idea of the input): 

10.0.1.0/24
10.0.2.0/24
10.0.3.0/24
192.168.0.0/24
 

...

A couple blank lines are in the input, as well as a comment line or two 
(#) which are just grepped out. I'm only interested in the "OrgName" 
portion of the IP registration, which the module returns as an element 
of a hash. So my script would output the above input like this:

10.0.1.0/24 Internet Assigned Numbers Authority 
10.0.2.0/24 Internet Assigned Numbers Authority 
10.0.3.0/24 Internet Assigned Numbers Authority 
192.168.0.0/24 Internet Assigned Numbers Authority 

Without the further ado, my current script:


#!/usr/bin/perl -w
use Net::Whois::IP;
use strict;


open(BLOCKS, "/home/me/cidr.txt")
                or die ($!);

        my @blocks=<BLOCKS>;

#grep out comments
@blocks=grep(/^[^#]/,@blocks);

foreach my $range (@blocks) {
chomp($range);

#shwick off cidr notation
my $ip=(split(/\//,$range))[0];

my %response = ();

my ($response,$array_of_responses) = whoisip_query($ip);

while ((my $key, my $value) = each %$response) {
       if ($key eq "OrgName")
                {
                print "$range $value\n";
                #short circuits the while loop...i think?
                last;
                }
} #end of while


} #end of foreach



NOW, my question is this: If I can traverse the hash and look for a key 
which is equal to "OrgName", why can't I simply print: $response{'OrgName'} ?
It just seems there should be a quicker, simpler way than having to 
traverse the whole hash.

I'm guessing the answer has something to do with referencing/dereferencing,
which is a new subject for me. The perldoc says that $response is "a
reference to a hash containing all information provided by the whois
registrar".

...so in the meantime, I will read up on references, but if someone 
can usher me to the light of understanding otherwise, I would greatly 
appreciate it :)

-Robert-


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to