perlfunc
root
<P>
Net::protoent - by-name interface to Perl's built-in getproto*() functions
<P>
<HR>
<P>
<PRE> use Net::protoent;
$p = getprotobyname(shift || 'tcp') || die "no proto";
printf "proto for %s is %d, aliases are %s\n",
$p->name, $p->proto, "@{$p->aliases}";
</PRE>
<P>
<PRE> use Net::protoent qw(:
<P>
This module's default exports override the core
<CODE>getprotoent(),</CODE>
<CODE>getprotobyname(),</CODE> and
<CODE>getnetbyport()</CODE> functions, replacing them with versions that return ``Net::protoent'' objects. They take default second arguments of ``tcp''. This object has methods that return the similarly named structure field name from the C's protoent structure from
<EM>netdb.h</EM>; namely name, aliases, and proto. The aliases method returns an array
reference, the rest scalars.
<P>
You may also import all the structure fields directly into your namespace as regular variables using the
<FONT SIZE=-1>:FIELDS</FONT> import tag. (Note that this still overrides your core functions.) Access these fields as variables named with a preceding
<CODE>p_</CODE>. Thus, <CODE>$proto_obj->name()</CODE> corresponds to <CODE>$p_name</CODE> if you import the fields. Array
references are available as regular array variables, so for example <CODE>@{ $proto_obj->aliases()
}</CODE> would be simply @p_aliases.
<P>
The
<CODE>getproto()</CODE> function is a simple front-end that forwards a numeric argument to
<CODE>getprotobyport(),</CODE> and the rest to
<CODE>getprotobyname().</CODE>
<P>
To access this functionality without the core overrides, pass the [perlfunc:use|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 <CODE>CORE::</CODE> pseudo-package.
<P>
<HR>
<H1><A NAME="NOTE">NOTE</A></H1>
<P>
While this class is currently implemented using the Class::Struct module to
build a struct-like class, you shouldn't rely upon this.
<P>
<HR>
<H1><A NAME="AUTHOR">AUTHOR</A></H1>
<P>
Tom Christiansen
<HR>