servent.html

来自「perl教程」· HTML 代码 · 共 114 行

HTML
114 行
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Net::servent - by-name interface to Perl's built-in getserv* functions</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',2);</script>
<h1><a>Net::servent - by-name interface to Perl's built-in getserv* functions</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<li><a href="#examples">EXAMPLES</a></li>
	<li><a href="#note">NOTE</a></li>
	<li><a href="#author">AUTHOR</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Net::servent - by-name interface to Perl's built-in getserv*() functions</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
 <span class="keyword">use</span> <span class="variable">Net::servent</span><span class="operator">;</span>
 <span class="variable">$s</span> <span class="operator">=</span> <span class="keyword">getservbyname</span><span class="operator">(</span><span class="keyword">shift</span> <span class="operator">||</span> <span class="string">'ftp'</span><span class="operator">)</span> <span class="operator">||</span> <span class="keyword">die</span> <span class="string">"no service"</span><span class="operator">;</span>
 <span class="keyword">printf</span> <span class="string">"port for %s is %s, aliases are %s\n"</span><span class="operator">,</span>
    <span class="variable">$s</span><span class="operator">-&gt;</span><span class="variable">name</span><span class="operator">,</span> <span class="variable">$s</span><span class="operator">-&gt;</span><span class="variable">port</span><span class="operator">,</span> <span class="string">"@{$s-&gt;aliases}"</span><span class="operator">;</span>
</pre>
<pre>
 <span class="keyword">use</span> <span class="variable">Net::servent</span> <span class="string">qw(:FIELDS)</span><span class="operator">;</span>
 <span class="keyword">getservbyname</span><span class="operator">(</span><span class="keyword">shift</span> <span class="operator">||</span> <span class="string">'ftp'</span><span class="operator">)</span> <span class="operator">||</span> <span class="keyword">die</span> <span class="string">"no service"</span><span class="operator">;</span>
 <span class="keyword">print</span> <span class="string">"port for $s_name is $s_port, aliases are @s_aliases\n"</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>This module's default exports override the core getservent(),
getservbyname(), and
<code>getnetbyport()</code> functions, replacing them with versions that return
&quot;Net::servent&quot; objects.  They take default second arguments of &quot;tcp&quot;.  This object has methods that return the similarly
named structure field name from the C's servent structure from <em>netdb.h</em>;
namely name, aliases, port, and proto.  The aliases
method returns an array reference, the rest scalars.</p>
<p>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 <code>s_</code>.  Thus, <code>$serv_obj-&gt;name()</code> corresponds to
$s_name if you import the fields.  Array references are available as
regular array variables, so for example <code>@{ $serv_obj-&gt;aliases()}</code>
would be simply @s_aliases.</p>
<p>The <code>getserv()</code> function is a simple front-end that forwards a numeric
argument to getservbyport(), and the rest to getservbyname().</p>
<p>To access this functionality without the core overrides,
pass the <a href="../../lib/Pod/perlfunc.html#item_use"><code>use</code></a> 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>
<p>
</p>
<hr />
<h1><a name="examples">EXAMPLES</a></h1>
<pre>
 <span class="keyword">use</span> <span class="variable">Net::servent</span> <span class="string">qw(:FIELDS)</span><span class="operator">;</span>
</pre>
<pre>
 <span class="keyword">while</span> <span class="operator">(</span><span class="variable">@ARGV</span><span class="operator">)</span> <span class="operator">{</span>
     <span class="keyword">my</span> <span class="operator">(</span><span class="variable">$service</span><span class="operator">,</span> <span class="variable">$proto</span><span class="operator">)</span> <span class="operator">=</span> <span class="operator">((</span><span class="keyword">split</span> <span class="regex">m!/!</span><span class="operator">,</span> <span class="keyword">shift</span><span class="operator">),</span> <span class="string">'tcp'</span><span class="operator">);</span>
     <span class="keyword">my</span> <span class="variable">$valet</span> <span class="operator">=</span> <span class="variable">getserv</span><span class="operator">(</span><span class="variable">$service</span><span class="operator">,</span> <span class="variable">$proto</span><span class="operator">);</span>
     <span class="keyword">unless</span> <span class="operator">(</span><span class="variable">$valet</span><span class="operator">)</span> <span class="operator">{</span>
         <span class="keyword">warn</span> <span class="string">"$0: No service: $service/$proto\n"</span>
         <span class="keyword">next</span><span class="operator">;</span>
     <span class="operator">}</span>
     <span class="keyword">printf</span> <span class="string">"service $service/$proto is port %d\n"</span><span class="operator">,</span> <span class="variable">$valet</span><span class="operator">-&gt;</span><span class="variable">port</span><span class="operator">;</span>
     <span class="keyword">print</span> <span class="string">"alias are @s_aliases\n"</span> <span class="keyword">if</span> <span class="variable">@s_aliases</span><span class="operator">;</span>
 <span class="operator">}</span>
</pre>
<p>
</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>
<p>
</p>
<hr />
<h1><a name="author">AUTHOR</a></h1>
<p>Tom Christiansen</p>

</body>

</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?