Kasper has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Honorable Ones I am quite new to Perl and I am trying to use a script for some DNS work, what I am running into is the erorr message 'undefined subroutine' when using &lookupaddress in the script. How can I make this subroutine available to my script?

Replies are listed 'Best First'.
Re: Missing subroutine
by kschwab (Vicar) on Aug 03, 2001 at 10:18 UTC
    There isn't a "built-in" subroutine called "lookupaddress" in perl. There are, of course, several different ways of performing DNS queries.

    I'm guessing you got the idea about a sub called "lookupaddress" from the Perl for System Administration Book. In the book, they offered several different ways of creating the "lookupaddress" subroutine.

    Here's one of them. It uses Net::DNS, which may be of interest to you.

    # this is straight from the o'reilly book. # the liberal use of globals is their idea, not mine :) # It populates a global hash without returning it, # and is probably only useful in the context of the book # exercise - sub lookupaddress{ my($hostname,$server) = @_; $res = new Net::DNS::Resolver; $res->nameservers($server); $packet = $res->query($hostname); if (!$packet) { warn "Unable to lookup data for $hostname from $server!\n"; return; } # stores the last RR we receive foreach $rr ($packet->answer) { $results{$server}=$rr->address; } }
      Thanks for the info, you're right I am using the Perl for System Administration book. I think I need to be a little more patient and actually READ the book istead of just pulling things out of it. I'll try to be more careful about asking questions in the future. I'm new to Perl and this site is great, tons of information and usable stuff. Thanks again for your answer.
Re: Missing subroutine
by BrentDax (Hermit) on Aug 03, 2001 at 10:18 UTC
    Um...you can write the routine I guess. Sorry to be 'rude', but we need more details. Where is &lookupaddress defined? Did you write it yourself, or did it come from some module you used? If it came from a module, which one?

    =cut
    --Brent Dax
    There is no sig.

      Thanks for replying, I think I found what I was looking for, I do need to write the subroutine. I was trying to use a script from Perl for System Administrator and didn't look far enough. Thanks again.