home *** CD-ROM | disk | FTP | other *** search
-
-
-
- NNNNeeeetttt::::::::hhhhoooosssstttteeeennnntttt((((3333)))) NNNNeeeetttt::::::::hhhhoooosssstttteeeennnntttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- Net::hostent - by-name interface to Perl's built-in gethost*() functions
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use Net::hostnet;
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This module's default exports override the core _g_e_t_h_o_s_t_b_y_n_a_m_e() and
- _g_e_t_h_o_s_t_b_y_a_d_d_r() functions, replacing them with versions that return
- "Net::hostent" objects. This object has methods that return the
- similarly named structure field name from the C's hostent structure from
- _n_e_t_d_b._h; namely name, aliases, addrtype, length, and addr_list. The
- aliases and addr_list methods return array reference, the rest scalars.
- The addr method is equivalent to the zeroth element in the addr_list
- array reference.
-
- You may also import all the structure fields directly into your namespace
- as regular variables using the :FIELDS import tag. (Note that this still
- overrides your core functions.) Access these fields as variables named
- with a preceding h_. Thus, $host_obj->_n_a_m_e() corresponds to $h_name if
- you import the fields. Array references are available as regular array
- variables, so for example @{ $host_obj->_a_l_i_a_s_e_s() } would be simply
- @h_aliases.
-
- The _g_e_t_h_o_s_t() funtion is a simple front-end that forwards a numeric
- argument to _g_e_t_h_o_s_t_b_y_a_d_d_r() by way of Socket::inet_aton, and the rest to
- _g_e_t_h_o_s_t_b_y_n_a_m_e().
-
- To access this functionality without the core overrides, pass the use an
- empty import list, and then access function functions with their full
- qualified names. On the other hand, the built-ins are still available
- via the CORE:: pseudo-package.
-
- EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- use Net::hostent;
- use Socket;
-
- @ARGV = ('netscape.com') unless @ARGV;
-
- for $host ( @ARGV ) {
-
- unless ($h = gethost($host)) {
- warn "$0: no such host: $host\n";
- next;
- }
-
- printf "\n%s is %s%s\n",
- $host,
- lc($h->name) eq lc($host) ? "" : "*really* ",
- $h->name;
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- NNNNeeeetttt::::::::hhhhoooosssstttteeeennnntttt((((3333)))) NNNNeeeetttt::::::::hhhhoooosssstttteeeennnntttt((((3333))))
-
-
-
- print "\taliases are ", join(", ", @{$h->aliases}), "\n"
- if @{$h->aliases};
-
- if ( @{$h->addr_list} > 1 ) {
- my $i;
- for $addr ( @{$h->addr_list} ) {
- printf "\taddr #%d is [%s]\n", $i++, inet_ntoa($addr);
- }
- } else {
- printf "\taddress is [%s]\n", inet_ntoa($h->addr);
- }
-
- if ($h = gethostbyaddr($h->addr)) {
- if (lc($h->name) ne lc($host)) {
- printf "\tThat addr reverses to host %s!\n", $h->name;
- $host = $h->name;
- redo;
- }
- }
- }
-
-
- NNNNOOOOTTTTEEEE
- While this class is currently implemented using the Class::Struct module
- to build a struct-like class, you shouldn't rely upon this.
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Tom Christiansen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-