Install Perl 5.8.8
[msysgit.git] / mingw / html / lib / Net / NNTP.html
blobe83da8ebb57e443b9a8eea6ff46385296693767a
1 <?xml version="1.0" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <title>Net::NNTP - NNTP Client class</title>
6 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7 <link rev="made" href="mailto:" />
8 </head>
10 <body style="background-color: white">
11 <table border="0" width="100%" cellspacing="0" cellpadding="3">
12 <tr><td class="block" style="background-color: #cccccc" valign="middle">
13 <big><strong><span class="block">&nbsp;Net::NNTP - NNTP Client class</span></strong></big>
14 </td></tr>
15 </table>
17 <p><a name="__index__"></a></p>
18 <!-- INDEX BEGIN -->
20 <ul>
22 <li><a href="#name">NAME</a></li>
23 <li><a href="#synopsis">SYNOPSIS</a></li>
24 <li><a href="#description">DESCRIPTION</a></li>
25 <li><a href="#constructor">CONSTRUCTOR</a></li>
26 <li><a href="#methods">METHODS</a></li>
27 <ul>
29 <li><a href="#extension_methods">Extension methods</a></li>
30 </ul>
32 <li><a href="#unsupported">UNSUPPORTED</a></li>
33 <li><a href="#definitions">DEFINITIONS</a></li>
34 <li><a href="#see_also">SEE ALSO</a></li>
35 <li><a href="#author">AUTHOR</a></li>
36 <li><a href="#copyright">COPYRIGHT</a></li>
37 </ul>
38 <!-- INDEX END -->
40 <hr />
41 <p>
42 </p>
43 <h1><a name="name">NAME</a></h1>
44 <p>Net::NNTP - NNTP Client class</p>
45 <p>
46 </p>
47 <hr />
48 <h1><a name="synopsis">SYNOPSIS</a></h1>
49 <pre>
50 use Net::NNTP;</pre>
51 <pre>
52 $nntp = Net::NNTP-&gt;new(&quot;some.host.name&quot;);
53 $nntp-&gt;quit;</pre>
54 <p>
55 </p>
56 <hr />
57 <h1><a name="description">DESCRIPTION</a></h1>
58 <p><code>Net::NNTP</code> is a class implementing a simple NNTP client in Perl as described
59 in RFC977. <code>Net::NNTP</code> inherits its communication methods from <code>Net::Cmd</code></p>
60 <p>
61 </p>
62 <hr />
63 <h1><a name="constructor">CONSTRUCTOR</a></h1>
64 <dl>
65 <dt><strong><a name="item_new">new ( [ HOST ] [, OPTIONS ])</a></strong>
67 <dd>
68 <p>This is the constructor for a new Net::NNTP object. <code>HOST</code> is the
69 name of the remote host to which a NNTP connection is required. If not
70 given then it may be passed as the <code>Host</code> option described below. If no host is passed
71 then two environment variables are checked, first <code>NNTPSERVER</code> then
72 <code>NEWSHOST</code>, then <code>Net::Config</code> is checked, and if a host is not found
73 then <code>news</code> is used.</p>
74 </dd>
75 <dd>
76 <p><code>OPTIONS</code> are passed in a hash like fashion, using key and value pairs.
77 Possible options are:</p>
78 </dd>
79 <dd>
80 <p><strong>Host</strong> - NNTP host to connect to. It may be a single scalar, as defined for
81 the <code>PeerAddr</code> option in <a href="file://C|\msysgit\mingw\html/lib/IO/Socket/INET.html">the IO::Socket::INET manpage</a>, or a reference to
82 an array with hosts to try in turn. The <a href="#host">host</a> method will return the value
83 which was used to connect to the host.</p>
84 </dd>
85 <dd>
86 <p><strong>Timeout</strong> - Maximum time, in seconds, to wait for a response from the
87 NNTP server, a value of zero will cause all IO operations to block.
88 (default: 120)</p>
89 </dd>
90 <dd>
91 <p><strong>Debug</strong> - Enable the printing of debugging information to STDERR</p>
92 </dd>
93 <dd>
94 <p><strong>Reader</strong> - If the remote server is INN then initially the connection
95 will be to nnrpd, by default <code>Net::NNTP</code> will issue a <code>MODE READER</code> command
96 so that the remote server becomes innd. If the <code>Reader</code> option is given
97 with a value of zero, then this command will not be sent and the
98 connection will be left talking to nnrpd.</p>
99 </dd>
100 </li>
101 </dl>
103 </p>
104 <hr />
105 <h1><a name="methods">METHODS</a></h1>
106 <p>Unless otherwise stated all methods return either a <em>true</em> or <em>false</em>
107 value, with <em>true</em> meaning that the operation was a success. When a method
108 states that it returns a value, failure will be returned as <em>undef</em> or an
109 empty list.</p>
110 <dl>
111 <dt><strong><a name="item_article">article ( [ MSGID|MSGNUM ], [FH] )</a></strong>
113 <dd>
114 <p>Retrieve the header, a blank line, then the body (text) of the
115 specified article.</p>
116 </dd>
117 <dd>
118 <p>If <code>FH</code> is specified then it is expected to be a valid filehandle
119 and the result will be printed to it, on success a true value will be
120 returned. If <code>FH</code> is not specified then the return value, on success,
121 will be a reference to an array containg the article requested, each
122 entry in the array will contain one line of the article.</p>
123 </dd>
124 <dd>
125 <p>If no arguments are passed then the current article in the currently
126 selected newsgroup is fetched.</p>
127 </dd>
128 <dd>
129 <p><code>MSGNUM</code> is a numeric id of an article in the current newsgroup, and
130 will change the current article pointer. <code>MSGID</code> is the message id of
131 an article as shown in that article's header. It is anticipated that the
132 client will obtain the <code>MSGID</code> from a list provided by the <a href="#item_newnews"><code>newnews</code></a>
133 command, from references contained within another article, or from the
134 message-id provided in the response to some other commands.</p>
135 </dd>
136 <dd>
137 <p>If there is an error then <a href="file://C|\msysgit\mingw\html/pod/perlfunc.html#item_undef"><code>undef</code></a> will be returned.</p>
138 </dd>
139 </li>
140 <dt><strong><a name="item_body">body ( [ MSGID|MSGNUM ], [FH] )</a></strong>
142 <dd>
143 <p>Like <a href="#item_article"><code>article</code></a> but only fetches the body of the article.</p>
144 </dd>
145 </li>
146 <dt><strong><a name="item_head">head ( [ MSGID|MSGNUM ], [FH] )</a></strong>
148 <dd>
149 <p>Like <a href="#item_article"><code>article</code></a> but only fetches the headers for the article.</p>
150 </dd>
151 </li>
152 <dt><strong><a name="item_articlefh">articlefh ( [ MSGID|MSGNUM ] )</a></strong>
154 <dt><strong><a name="item_bodyfh">bodyfh ( [ MSGID|MSGNUM ] )</a></strong>
156 <dt><strong><a name="item_headfh">headfh ( [ MSGID|MSGNUM ] )</a></strong>
158 <dd>
159 <p>These are similar to article(), <a href="#item_body"><code>body()</code></a> and head(), but rather than
160 returning the requested data directly, they return a tied filehandle
161 from which to read the article.</p>
162 </dd>
163 </li>
164 <dt><strong><a name="item_nntpstat">nntpstat ( [ MSGID|MSGNUM ] )</a></strong>
166 <dd>
167 <p>The <a href="#item_nntpstat"><code>nntpstat</code></a> command is similar to the <a href="#item_article"><code>article</code></a> command except that no
168 text is returned. When selecting by message number within a group,
169 the <a href="#item_nntpstat"><code>nntpstat</code></a> command serves to set the ``current article pointer'' without
170 sending text.</p>
171 </dd>
172 <dd>
173 <p>Using the <a href="#item_nntpstat"><code>nntpstat</code></a> command to
174 select by message-id is valid but of questionable value, since a
175 selection by message-id does <strong>not</strong> alter the ``current article pointer''.</p>
176 </dd>
177 <dd>
178 <p>Returns the message-id of the ``current article''.</p>
179 </dd>
180 </li>
181 <dt><strong><a name="item_group">group ( [ GROUP ] )</a></strong>
183 <dd>
184 <p>Set and/or get the current group. If <code>GROUP</code> is not given then information
185 is returned on the current group.</p>
186 </dd>
187 <dd>
188 <p>In a scalar context it returns the group name.</p>
189 </dd>
190 <dd>
191 <p>In an array context the return value is a list containing, the number
192 of articles in the group, the number of the first article, the number
193 of the last article and the group name.</p>
194 </dd>
195 </li>
196 <dt><strong><a name="item_ihave">ihave ( MSGID [, MESSAGE ])</a></strong>
198 <dd>
199 <p>The <a href="#item_ihave"><code>ihave</code></a> command informs the server that the client has an article
200 whose id is <code>MSGID</code>. If the server desires a copy of that
201 article, and <code>MESSAGE</code> has been given the it will be sent.</p>
202 </dd>
203 <dd>
204 <p>Returns <em>true</em> if the server desires the article and <code>MESSAGE</code> was
205 successfully sent,if specified.</p>
206 </dd>
207 <dd>
208 <p>If <code>MESSAGE</code> is not specified then the message must be sent using the
209 <code>datasend</code> and <code>dataend</code> methods from <a href="file://C|\msysgit\mingw\html/lib/Net/Cmd.html">the Net::Cmd manpage</a></p>
210 </dd>
211 <dd>
212 <p><code>MESSAGE</code> can be either an array of lines or a reference to an array.</p>
213 </dd>
214 </li>
215 <dt><strong><a name="item_last">last ()</a></strong>
217 <dd>
218 <p>Set the ``current article pointer'' to the previous article in the current
219 newsgroup.</p>
220 </dd>
221 <dd>
222 <p>Returns the message-id of the article.</p>
223 </dd>
224 </li>
225 <dt><strong><a name="item_date">date ()</a></strong>
227 <dd>
228 <p>Returns the date on the remote server. This date will be in a UNIX time
229 format (seconds since 1970)</p>
230 </dd>
231 </li>
232 <dt><strong><a name="item_postok">postok ()</a></strong>
234 <dd>
235 <p><a href="#item_postok"><code>postok</code></a> will return <em>true</em> if the servers initial response indicated
236 that it will allow posting.</p>
237 </dd>
238 </li>
239 <dt><strong><a name="item_authinfo">authinfo ( USER, PASS )</a></strong>
241 <dd>
242 <p>Authenticates to the server (using AUTHINFO USER / AUTHINFO PASS)
243 using the supplied username and password. Please note that the
244 password is sent in clear text to the server. This command should not
245 be used with valuable passwords unless the connection to the server is
246 somehow protected.</p>
247 </dd>
248 </li>
249 <dt><strong><a name="item_list">list ()</a></strong>
251 <dd>
252 <p>Obtain information about all the active newsgroups. The results is a reference
253 to a hash where the key is a group name and each value is a reference to an
254 array. The elements in this array are:- the last article number in the group,
255 the first article number in the group and any information flags about the group.</p>
256 </dd>
257 </li>
258 <dt><strong><a name="item_newgroups">newgroups ( SINCE [, DISTRIBUTIONS ])</a></strong>
260 <dd>
261 <p><code>SINCE</code> is a time value and <code>DISTRIBUTIONS</code> is either a distribution
262 pattern or a reference to a list of distribution patterns.
263 The result is the same as <a href="#item_list"><code>list</code></a>, but the
264 groups return will be limited to those created after <code>SINCE</code> and, if
265 specified, in one of the distribution areas in <code>DISTRIBUTIONS</code>.</p>
266 </dd>
267 </li>
268 <dt><strong><a name="item_newnews">newnews ( SINCE [, GROUPS [, DISTRIBUTIONS ]])</a></strong>
270 <dd>
271 <p><code>SINCE</code> is a time value. <code>GROUPS</code> is either a group pattern or a reference
272 to a list of group patterns. <code>DISTRIBUTIONS</code> is either a distribution
273 pattern or a reference to a list of distribution patterns.</p>
274 </dd>
275 <dd>
276 <p>Returns a reference to a list which contains the message-ids of all news posted
277 after <code>SINCE</code>, that are in a groups which matched <code>GROUPS</code> and a
278 distribution which matches <code>DISTRIBUTIONS</code>.</p>
279 </dd>
280 </li>
281 <dt><strong><a name="item_next">next ()</a></strong>
283 <dd>
284 <p>Set the ``current article pointer'' to the next article in the current
285 newsgroup.</p>
286 </dd>
287 <dd>
288 <p>Returns the message-id of the article.</p>
289 </dd>
290 </li>
291 <dt><strong><a name="item_post">post ( [ MESSAGE ] )</a></strong>
293 <dd>
294 <p>Post a new article to the news server. If <code>MESSAGE</code> is specified and posting
295 is allowed then the message will be sent.</p>
296 </dd>
297 <dd>
298 <p>If <code>MESSAGE</code> is not specified then the message must be sent using the
299 <code>datasend</code> and <code>dataend</code> methods from <a href="file://C|\msysgit\mingw\html/lib/Net/Cmd.html">the Net::Cmd manpage</a></p>
300 </dd>
301 <dd>
302 <p><code>MESSAGE</code> can be either an array of lines or a reference to an array.</p>
303 </dd>
304 <dd>
305 <p>The message, either sent via <code>datasend</code> or as the <code>MESSAGE</code>
306 parameter, must be in the format as described by RFC822 and must
307 contain From:, Newsgroups: and Subject: headers.</p>
308 </dd>
309 </li>
310 <dt><strong><a name="item_postfh">postfh ()</a></strong>
312 <dd>
313 <p>Post a new article to the news server using a tied filehandle. If
314 posting is allowed, this method will return a tied filehandle that you
315 can <a href="file://C|\msysgit\mingw\html/pod/perlfunc.html#item_print"><code>print()</code></a> the contents of the article to be posted. You must
316 explicitly <a href="file://C|\msysgit\mingw\html/pod/perlfunc.html#item_close"><code>close()</code></a> the filehandle when you are finished posting the
317 article, and the return value from the <a href="file://C|\msysgit\mingw\html/pod/perlfunc.html#item_close"><code>close()</code></a> call will indicate
318 whether the message was successfully posted.</p>
319 </dd>
320 </li>
321 <dt><strong><a name="item_slave">slave ()</a></strong>
323 <dd>
324 <p>Tell the remote server that I am not a user client, but probably another
325 news server.</p>
326 </dd>
327 </li>
328 <dt><strong><a name="item_quit">quit ()</a></strong>
330 <dd>
331 <p>Quit the remote server and close the socket connection.</p>
332 </dd>
333 </li>
334 </dl>
336 </p>
337 <h2><a name="extension_methods">Extension methods</a></h2>
338 <p>These methods use commands that are not part of the RFC977 documentation. Some
339 servers may not support all of them.</p>
340 <dl>
341 <dt><strong><a name="item_newsgroups">newsgroups ( [ PATTERN ] )</a></strong>
343 <dd>
344 <p>Returns a reference to a hash where the keys are all the group names which
345 match <a href="#item_pattern"><code>PATTERN</code></a>, or all of the groups if no pattern is specified, and
346 each value contains the description text for the group.</p>
347 </dd>
348 </li>
349 <dt><strong><a name="item_distributions">distributions ()</a></strong>
351 <dd>
352 <p>Returns a reference to a hash where the keys are all the possible
353 distribution names and the values are the distribution descriptions.</p>
354 </dd>
355 </li>
356 <dt><strong><a name="item_subscriptions">subscriptions ()</a></strong>
358 <dd>
359 <p>Returns a reference to a list which contains a list of groups which
360 are recommended for a new user to subscribe to.</p>
361 </dd>
362 </li>
363 <dt><strong><a name="item_overview_fmt">overview_fmt ()</a></strong>
365 <dd>
366 <p>Returns a reference to an array which contain the names of the fields returned
367 by <a href="#item_xover"><code>xover</code></a>.</p>
368 </dd>
369 </li>
370 <dt><strong><a name="item_active_times">active_times ()</a></strong>
372 <dd>
373 <p>Returns a reference to a hash where the keys are the group names and each
374 value is a reference to an array containing the time the groups was created
375 and an identifier, possibly an Email address, of the creator.</p>
376 </dd>
377 </li>
378 <dt><strong><a name="item_active">active ( [ PATTERN ] )</a></strong>
380 <dd>
381 <p>Similar to <a href="#item_list"><code>list</code></a> but only active groups that match the pattern are returned.
382 <a href="#item_pattern"><code>PATTERN</code></a> can be a group pattern.</p>
383 </dd>
384 </li>
385 <dt><strong><a name="item_xgtitle">xgtitle ( PATTERN )</a></strong>
387 <dd>
388 <p>Returns a reference to a hash where the keys are all the group names which
389 match <a href="#item_pattern"><code>PATTERN</code></a> and each value is the description text for the group.</p>
390 </dd>
391 </li>
392 <dt><strong><a name="item_xhdr">xhdr ( HEADER, MESSAGE-SPEC )</a></strong>
394 <dd>
395 <p>Obtain the header field <code>HEADER</code> for all the messages specified.</p>
396 </dd>
397 <dd>
398 <p>The return value will be a reference
399 to a hash where the keys are the message numbers and each value contains
400 the text of the requested header for that message.</p>
401 </dd>
402 </li>
403 <dt><strong><a name="item_xover">xover ( MESSAGE-SPEC )</a></strong>
405 <dd>
406 <p>The return value will be a reference
407 to a hash where the keys are the message numbers and each value contains
408 a reference to an array which contains the overview fields for that
409 message.</p>
410 </dd>
411 <dd>
412 <p>The names of the fields can be obtained by calling <a href="#item_overview_fmt"><code>overview_fmt</code></a>.</p>
413 </dd>
414 </li>
415 <dt><strong><a name="item_xpath">xpath ( MESSAGE-ID )</a></strong>
417 <dd>
418 <p>Returns the path name to the file on the server which contains the specified
419 message.</p>
420 </dd>
421 </li>
422 <dt><strong><a name="item_xpat">xpat ( HEADER, PATTERN, MESSAGE-SPEC)</a></strong>
424 <dd>
425 <p>The result is the same as <a href="#item_xhdr"><code>xhdr</code></a> except the is will be restricted to
426 headers where the text of the header matches <a href="#item_pattern"><code>PATTERN</code></a></p>
427 </dd>
428 </li>
429 <dt><strong><a name="item_xrover">xrover</a></strong>
431 <dd>
432 <p>The XROVER command returns reference information for the <a href="#item_article"><code>article(s)</code></a>
433 specified.</p>
434 </dd>
435 <dd>
436 <p>Returns a reference to a HASH where the keys are the message numbers and the
437 values are the References: lines from the articles</p>
438 </dd>
439 </li>
440 <dt><strong><a name="item_listgroup">listgroup ( [ GROUP ] )</a></strong>
442 <dd>
443 <p>Returns a reference to a list of all the active messages in <code>GROUP</code>, or
444 the current group if <code>GROUP</code> is not specified.</p>
445 </dd>
446 </li>
447 <dt><strong><a name="item_reader">reader</a></strong>
449 <dd>
450 <p>Tell the server that you are a reader and not another server.</p>
451 </dd>
452 <dd>
453 <p>This is required by some servers. For example if you are connecting to
454 an INN server and you have transfer permission your connection will
455 be connected to the transfer daemon, not the NNTP daemon. Issuing
456 this command will cause the transfer daemon to hand over control
457 to the NNTP daemon.</p>
458 </dd>
459 <dd>
460 <p>Some servers do not understand this command, but issuing it and ignoring
461 the response is harmless.</p>
462 </dd>
463 </li>
464 </dl>
466 </p>
467 <hr />
468 <h1><a name="unsupported">UNSUPPORTED</a></h1>
469 <p>The following NNTP command are unsupported by the package, and there are
470 no plans to do so.</p>
471 <pre>
472 AUTHINFO GENERIC
473 XTHREAD
474 XSEARCH
475 XINDEX</pre>
477 </p>
478 <hr />
479 <h1><a name="definitions">DEFINITIONS</a></h1>
480 <dl>
481 <dt><strong><a name="item_message_2dspec">MESSAGE-SPEC</a></strong>
483 <dd>
484 <p><a href="#item_message_2dspec"><code>MESSAGE-SPEC</code></a> is either a single message-id, a single message number, or
485 a reference to a list of two message numbers.</p>
486 </dd>
487 <dd>
488 <p>If <a href="#item_message_2dspec"><code>MESSAGE-SPEC</code></a> is a reference to a list of two message numbers and the
489 second number in a range is less than or equal to the first then the range
490 represents all messages in the group after the first message number.</p>
491 </dd>
492 <dd>
493 <p><strong>NOTE</strong> For compatibility reasons only with earlier versions of Net::NNTP
494 a message spec can be passed as a list of two numbers, this is deprecated
495 and a reference to the list should now be passed</p>
496 </dd>
497 </li>
498 <dt><strong><a name="item_pattern">PATTERN</a></strong>
500 <dd>
501 <p>The <code>NNTP</code> protocol uses the <code>WILDMAT</code> format for patterns.
502 The WILDMAT format was first developed by Rich Salz based on
503 the format used in the UNIX ``find'' command to articulate
504 file names. It was developed to provide a uniform mechanism
505 for matching patterns in the same manner that the UNIX shell
506 matches filenames.</p>
507 </dd>
508 <dd>
509 <p>Patterns are implicitly anchored at the
510 beginning and end of each string when testing for a match.</p>
511 </dd>
512 <dd>
513 <p>There are five pattern matching operations other than a strict
514 one-to-one match between the pattern and the source to be
515 checked for a match.</p>
516 </dd>
517 <dd>
518 <p>The first is an asterisk <code>*</code> to match any sequence of zero or more
519 characters.</p>
520 </dd>
521 <dd>
522 <p>The second is a question mark <code>?</code> to match any single character. The
523 third specifies a specific set of characters.</p>
524 </dd>
525 <dd>
526 <p>The set is specified as a list of characters, or as a range of characters
527 where the beginning and end of the range are separated by a minus (or dash)
528 character, or as any combination of lists and ranges. The dash can
529 also be included in the set as a character it if is the beginning
530 or end of the set. This set is enclosed in square brackets. The
531 close square bracket <code>]</code> may be used in a set if it is the first
532 character in the set.</p>
533 </dd>
534 <dd>
535 <p>The fourth operation is the same as the
536 logical not of the third operation and is specified the same
537 way as the third with the addition of a caret character <code>^</code> at
538 the beginning of the test string just inside the open square
539 bracket.</p>
540 </dd>
541 <dd>
542 <p>The final operation uses the backslash character to
543 invalidate the special meaning of an open square bracket <code>[</code>,
544 the asterisk, backslash or the question mark. Two backslashes in
545 sequence will result in the evaluation of the backslash as a
546 character with no special meaning.</p>
547 </dd>
548 <dl>
549 <dt><strong><a name="item_examples">Examples</a></strong>
551 <dt><strong><a name="item__5b_5e_5d_2d_5d"><code>[^]-]</code></a></strong>
553 <dd>
554 <p>matches any single character other than a close square
555 bracket or a minus sign/dash.</p>
556 </dd>
557 </li>
558 <li>
559 <p>matches any string that ends with the string ``bdc''
560 including the string ``bdc'' (without quotes).</p>
561 </li>
562 <dt><strong><a name="item__5b0_2d9a_2dza_2dz_5d"><code>[0-9a-zA-Z]</code></a></strong>
564 <dd>
565 <p>matches any single printable alphanumeric ASCII character.</p>
566 </dd>
567 </li>
568 <dt><strong><a name="item_a_3f_3fd"><code>a??d</code></a></strong>
570 <dd>
571 <p>matches any four character string which begins
572 with a and ends with d.</p>
573 </dd>
574 </li>
575 </dl>
576 </dl>
578 </p>
579 <hr />
580 <h1><a name="see_also">SEE ALSO</a></h1>
581 <p><a href="file://C|\msysgit\mingw\html/lib/Net/Cmd.html">the Net::Cmd manpage</a></p>
583 </p>
584 <hr />
585 <h1><a name="author">AUTHOR</a></h1>
586 <p>Graham Barr &lt;<a href="mailto:gbarr@pobox.com">gbarr@pobox.com</a>&gt;</p>
588 </p>
589 <hr />
590 <h1><a name="copyright">COPYRIGHT</a></h1>
591 <p>Copyright (c) 1995-1997 Graham Barr. All rights reserved.
592 This program is free software; you can redistribute it and/or modify
593 it under the same terms as Perl itself.</p>
594 <hr><p><em>$Id: //depot/libnet/Net/NNTP.pm#18 $</em></p>
595 <table border="0" width="100%" cellspacing="0" cellpadding="3">
596 <tr><td class="block" style="background-color: #cccccc" valign="middle">
597 <big><strong><span class="block">&nbsp;Net::NNTP - NNTP Client class</span></strong></big>
598 </td></tr>
599 </table>
601 </body>
603 </html>