~ubuntu-branches/ubuntu/intrepid/perl-doc-html/intrepid

« back to all changes in this revision

Viewing changes to functions/endhostent.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2008-05-17 20:14:19 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080517201419-qgbuogq2ckkdisyi
Tags: 5.10.0-2
Supersede botched upload of 5.10.0-1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
      <h2>Links:</h2>
55
55
      <ul>
56
56
        <li><a href="http://search.cpan.org">CPAN</a></li>
 
57
        <li><a href="http://www.perl.org">Perl.org</a></li>
57
58
        <li><a href="http://www.perl.com">Perl.com</a></li>
58
 
        <li><a href="http://www.perl.org">Perl.org</a></li>
 
59
        <li><a href="http://perlbuzz.com">Perl Buzz</a></li>
 
60
        <li><a href="http://www.perlfoundation.org/perl5/index.cgi">Perl 5 Wiki</a></li>
 
61
        <li><a href="http://jobs.perl.org">Perl Jobs</a></li>
59
62
        <li><a href="http://www.pm.org">Perl Mongers</a></li>
60
63
        <li><a href="http://www.perlmonks.org">Perl Monks</a></li>
61
64
        <li><a href="http://planet.perl.org">Planet Perl</a></li>
65
68
      <ul>
66
69
        <li>Site maintained by<br><a href="http://perl.jonallen.info">Jon Allen</a>
67
70
            (<a href="http://perl.jonallen.info">JJ</a>)</li>
68
 
        <li class="spaced">Last updated on<br>23 April 2006</li>
 
71
        <li class="spaced">Last updated on<br>23 December 2007</li>
69
72
        <li class="spaced">See the <a href="http://perl.jonallen.info/projects/perldoc">project page</a> for
70
73
        more details</li>
71
74
      </ul>
76
79
    <div id="centerContent">
77
80
      <div id="contentHeader">
78
81
        <div id="contentHeaderLeft"><a href="#" onClick="showLeft()">Show navigation</a></div>
79
 
        <div id="contentHeaderCentre">-- Perl 5.8.8 documentation --</div>
 
82
        <div id="contentHeaderCentre">-- Perl 5.10.0 documentation --</div>
80
83
        <div id="contentHeaderRight"><a href="#" onClick="showRight()">Show toolbar</a></div>
81
84
      </div>
82
85
      <div id="breadCrumbs"><a href="../index.html">Home</a> &gt; <a href="../index-language.html">Language reference</a> &gt; <a href="../index-functions.html">Functions</a> &gt; endhostent</div>
87
90
system library.  In list context, the return values from the
88
91
various get routines are as follows:</p>
89
92
<pre class="verbatim">    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$passwd</span><span class="cm">,</span><span class="i">$uid</span><span class="cm">,</span><span class="i">$gid</span><span class="cm">,</span>
90
 
       <span class="i">$quota</span><span class="cm">,</span><span class="i">$comment</span><span class="cm">,</span><span class="i">$gcos</span><span class="cm">,</span><span class="i">$dir</span><span class="cm">,</span><span class="i">$shell</span><span class="cm">,</span><span class="i">$expire</span><span class="s">)</span> = getpw*
91
 
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$passwd</span><span class="cm">,</span><span class="i">$gid</span><span class="cm">,</span><span class="i">$members</span><span class="s">)</span> = getgr*
92
 
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$addrtype</span><span class="cm">,</span><span class="i">$length</span><span class="cm">,</span><span class="i">@addrs</span><span class="s">)</span> = gethost*
93
 
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$addrtype</span><span class="cm">,</span><span class="i">$net</span><span class="s">)</span> = getnet*
94
 
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$proto</span><span class="s">)</span> = getproto*
95
 
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$port</span><span class="cm">,</span><span class="i">$proto</span><span class="s">)</span> = getserv*</pre>
 
93
       <span class="i">$quota</span><span class="cm">,</span><span class="i">$comment</span><span class="cm">,</span><span class="i">$gcos</span><span class="cm">,</span><span class="i">$dir</span><span class="cm">,</span><span class="i">$shell</span><span class="cm">,</span><span class="i">$expire</span><span class="s">)</span> = <span class="w">getpw</span>*
 
94
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$passwd</span><span class="cm">,</span><span class="i">$gid</span><span class="cm">,</span><span class="i">$members</span><span class="s">)</span> = <span class="w">getgr</span>*
 
95
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$addrtype</span><span class="cm">,</span><span class="i">$length</span><span class="cm">,</span><span class="i">@addrs</span><span class="s">)</span> = <span class="w">gethost</span>*
 
96
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$addrtype</span><span class="cm">,</span><span class="i">$net</span><span class="s">)</span> = <span class="w">getnet</span>*
 
97
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$proto</span><span class="s">)</span> = <span class="w">getproto</span>*
 
98
    <span class="s">(</span><span class="i">$name</span><span class="cm">,</span><span class="i">$aliases</span><span class="cm">,</span><span class="i">$port</span><span class="cm">,</span><span class="i">$proto</span><span class="s">)</span> = <span class="w">getserv</span>*</pre>
96
99
<p>(If the entry doesn't exist you get a null list.)</p>
97
100
<p>The exact meaning of the $gcos field varies but it usually contains
98
101
the real name of the user (as opposed to the login name) and other
124
127
in your system, please consult your getpwnam(3) documentation and your
125
128
<i>pwd.h</i> file.  You can also find out from within Perl what your
126
129
$quota and $comment fields mean and whether you have the $expire field
127
 
by using the <code class="inline"><a class="l_w" href="../Config.html">Config</a></code> module and the values <code class="inline">d_pwquota</code>
128
 
, <code class="inline">d_pwage</code>
 
130
by using the <code class="inline"><span class="w">Config</span></code>
 
131
 module and the values <code class="inline"><span class="w">d_pwquota</span></code>
 
132
, <code class="inline"><span class="w">d_pwage</span></code>
129
133
,
130
 
<code class="inline">d_pwchange</code>
131
 
, <code class="inline">d_pwcomment</code>
132
 
, and <code class="inline">d_pwexpire</code>
 
134
<code class="inline"><span class="w">d_pwchange</span></code>
 
135
, <code class="inline"><span class="w">d_pwcomment</span></code>
 
136
, and <code class="inline"><span class="w">d_pwexpire</span></code>
133
137
.  Shadow password
134
138
files are only supported if your vendor has implemented them in the
135
139
intuitive fashion that calling the regular C library routines gets the
139
143
facility are unlikely to be supported.</p>
140
144
<p>The $members value returned by <i>getgr*()</i> is a space separated list of
141
145
the login names of the members of the group.</p>
142
 
<p>For the <i>gethost*()</i> functions, if the <code class="inline">h_errno</code>
 
146
<p>For the <i>gethost*()</i> functions, if the <code class="inline"><span class="w">h_errno</span></code>
143
147
 variable is supported in
144
148
C, it will be returned to you via <code class="inline"><span class="i">$?</span></code>
145
149
 if the function call fails.  The
148
152
addresses returned by the corresponding system library call.  In the
149
153
Internet domain, each address is four bytes long and you can unpack it
150
154
by saying something like:</p>
151
 
<pre class="verbatim">    <span class="s">(</span><span class="i">$a</span><span class="cm">,</span><span class="i">$b</span><span class="cm">,</span><span class="i">$c</span><span class="cm">,</span><span class="i">$d</span><span class="s">)</span> = <a class="l_k" href="../functions/unpack.html">unpack</a><span class="s">(</span><span class="q">&#39;C4&#39;</span><span class="cm">,</span><span class="i">$addr</span>[<span class="n">0</span>]<span class="s">)</span><span class="sc">;</span></pre>
 
155
<pre class="verbatim">    <span class="s">(</span><span class="i">$a</span><span class="cm">,</span><span class="i">$b</span><span class="cm">,</span><span class="i">$c</span><span class="cm">,</span><span class="i">$d</span><span class="s">)</span> = <a class="l_k" href="../functions/unpack.html">unpack</a><span class="s">(</span><span class="q">'W4'</span><span class="cm">,</span><span class="i">$addr</span>[<span class="n">0</span>]<span class="s">)</span><span class="sc">;</span></pre>
152
156
<p>The Socket library makes this slightly easier:</p>
153
 
<pre class="verbatim">    <a class="l_k" href="../functions/use.html">use</a> <a class="l_w" href="../Socket.html">Socket</a><span class="sc">;</span>
 
157
<pre class="verbatim">    <a class="l_k" href="../functions/use.html">use</a> <span class="w">Socket</span><span class="sc">;</span>
154
158
    <span class="i">$iaddr</span> = <span class="i">inet_aton</span><span class="s">(</span><span class="q">&quot;127.1&quot;</span><span class="s">)</span><span class="sc">;</span> <span class="c"># or whatever address</span>
155
 
    <span class="i">$name</span>  = <a class="l_k" href="../functions/gethostbyaddr.html">gethostbyaddr</a><span class="s">(</span><span class="i">$iaddr</span><span class="cm">,</span> AF_INET<span class="s">)</span><span class="sc">;</span></pre>
 
159
    <span class="i">$name</span>  = <a class="l_k" href="../functions/gethostbyaddr.html">gethostbyaddr</a><span class="s">(</span><span class="i">$iaddr</span><span class="cm">,</span> <span class="w">AF_INET</span><span class="s">)</span><span class="sc">;</span></pre>
156
160
<pre class="verbatim">    <span class="c"># or going the other way</span>
157
161
    <span class="i">$straddr</span> = <span class="i">inet_ntoa</span><span class="s">(</span><span class="i">$iaddr</span><span class="s">)</span><span class="sc">;</span></pre>
 
162
<p>In the opposite way, to resolve a hostname to the IP address
 
163
you can write this:</p>
 
164
<pre class="verbatim">    <a class="l_k" href="../functions/use.html">use</a> <span class="w">Socket</span><span class="sc">;</span>
 
165
    <span class="i">$packed_ip</span> = <a class="l_k" href="../functions/gethostbyname.html">gethostbyname</a><span class="s">(</span><span class="q">&quot;www.perl.org&quot;</span><span class="s">)</span><span class="sc">;</span>
 
166
    if <span class="s">(</span><a class="l_k" href="../functions/defined.html">defined</a> <span class="i">$packed_ip</span><span class="s">)</span> <span class="s">{</span>
 
167
        <span class="i">$ip_address</span> = <span class="i">inet_ntoa</span><span class="s">(</span><span class="i">$packed_ip</span><span class="s">)</span><span class="sc">;</span>
 
168
    <span class="s">}</span></pre>
 
169
<p>Make sure &lt;gethostbyname()&gt; is called in SCALAR context and that
 
170
its return value is checked for definedness.</p>
158
171
<p>If you get tired of remembering which element of the return list
159
172
contains which return value, by-name interfaces are provided
160
 
in standard modules: <code class="inline"><a class="l_w" href="../File/stat.html">File::stat</a></code>, <code class="inline"><a class="l_w" href="../Net/hostent.html">Net::hostent</a></code>, <code class="inline"><a class="l_w" href="../Net/netent.html">Net::netent</a></code>,
161
 
<code class="inline"><a class="l_w" href="../Net/protoent.html">Net::protoent</a></code>, <code class="inline"><a class="l_w" href="../Net/servent.html">Net::servent</a></code>, <code class="inline"><a class="l_w" href="../Time/gmtime.html">Time::gmtime</a></code>, <code class="inline"><a class="l_w" href="../Time/localtime.html">Time::localtime</a></code>,
162
 
and <code class="inline"><a class="l_w" href="../User/grent.html">User::grent</a></code>.  These override the normal built-ins, supplying
 
173
in standard modules: <code class="inline"><span class="w">File::stat</span></code>
 
174
, <code class="inline"><span class="w">Net::hostent</span></code>
 
175
, <code class="inline"><span class="w">Net::netent</span></code>
 
176
,
 
177
<code class="inline"><span class="w">Net::protoent</span></code>
 
178
, <code class="inline"><span class="w">Net::servent</span></code>
 
179
, <code class="inline"><span class="w">Time::gmtime</span></code>
 
180
, <code class="inline"><span class="w">Time::localtime</span></code>
 
181
,
 
182
and <code class="inline"><span class="w">User::grent</span></code>
 
183
.  These override the normal built-ins, supplying
163
184
versions that return objects with the appropriate names
164
185
for each field.  For example:</p>
165
 
<pre class="verbatim">   <a class="l_k" href="../functions/use.html">use</a> <a class="l_w" href="../File/stat.html">File::stat</a><span class="sc">;</span>
166
 
   <a class="l_k" href="../functions/use.html">use</a> <a class="l_w" href="../User/pwent.html">User::pwent</a><span class="sc">;</span>
 
186
<pre class="verbatim">   <a class="l_k" href="../functions/use.html">use</a> <span class="w">File::stat</span><span class="sc">;</span>
 
187
   <a class="l_k" href="../functions/use.html">use</a> <span class="w">User::pwent</span><span class="sc">;</span>
167
188
   <span class="i">$is_his</span> = <span class="s">(</span><a class="l_k" href="../functions/stat.html">stat</a><span class="s">(</span><span class="i">$filename</span><span class="s">)</span><span class="i">-&gt;uid</span> == <span class="i">pwent</span><span class="s">(</span><span class="i">$whoever</span><span class="s">)</span><span class="i">-&gt;uid</span><span class="s">)</span><span class="sc">;</span></pre>
168
189
<p>Even though it looks like they're the same method calls (uid),
169
 
they aren't, because a <code class="inline"><a class="l_w" href="../File/stat.html">File::stat</a></code> object is different from
170
 
a <code class="inline"><a class="l_w" href="../User/pwent.html">User::pwent</a></code> object.</p>
 
190
they aren't, because a <code class="inline"><span class="w">File::stat</span></code>
 
191
 object is different from
 
192
a <code class="inline"><span class="w">User::pwent</span></code>
 
193
 object.</p>
171
194
</li>
172
195
</ul>
173
196
</div>
187
210
          <!--<select name="r"><option value="1" selected>Go to top result<option value="0">Show results list</select>-->
188
211
        </form>
189
212
      </p>
 
213
      <script language="JavaScript" type="text/javascript" src="/perl-version.js"></script>
190
214
      <h2>Labels:</h2>
191
215
      <p>
192
216
        <a href="#" onClick="addLabel('endhostent','functions/endhostent.html')">Add this page</a>