sherk@umd5.umd.edu (Erik Sherk) (08/03/90)
Hello,
I need to find the name of a host from within a perl script. The
following seems to work, but there must be a better way!
----------------
($1, $2, $3, $4) = split(/\./, $IPaddr);
$query = sprintf("set querytype=ptr\n%d.%d.%d.%d.in-addr.arpa", $4,$3,$2,$1);
$nsreply = `echo '$query' | nslookup 2>/dev/null | \
egrep 'in-addr'|egrep -v 'domain'`;
($foo, $foo, $foo, $foo, $host) = split( /[ \t\n]+/, $nsreply );
----------------
(I split the third line for readability)
You will note that this takes four processes to do what one
system call should do! Also, there is the need to redirect stderr
from nslookup.
Is there any way to "split" a string without specifing the
field separators?
Please help, this is my first perl script!
Erik Sherk
sherk@nmc.cit.cornell.edu
P.S. please email direct, as I am 85 articles behind in comp.lang.perlschwartz@groucho.cs.psu.edu (Scott Schwartz) (08/03/90)
In article <7028@umd5.umd.edu> sherk@umd5.umd.edu (Erik Sherk) writes: I need to find the name of a host from within a perl script. The following seems to work, but there must be a better way! Try this: #!/usr/bin/perl @inaddr = (130, 203, 2, 4); if (($name) = gethostbyaddr(pack("C4", @inaddr), &AF_INET)) { print $name, "\n"; } else { print "Unknown address\n"; } sub AF_INET {2;}