=encoding euc-jp =head1 名前 Net::NNTP - NNTPクライアント・クラス =head1 概要 use Net::NNTP; $nntp = Net::NNTP->new("some.host.name"); $nntp->quit; =head1 DESCRIPTION CはPerlでのRFC977で記述されているNNTPクライアントの簡単な実装です。 CはCからの通信メソッドを継承します。 =head1 コンストラクタ =over 4 =item new ( [ HOST ] [, OPTIONS ]) これは新しいNet::NNTPオブジェクトのコンストラクタです。CはNNTP接続に 必要とされるリモートホストです。与えられなければ、まずC、 それからCという2つの環境変数がチェックされます。そして Cチェックされます。ホストが見つからなければ、Cが 使われます。 Cはキーと値の組というハッシュの形式で渡されます。 指定できるオプションは以下の通りです: B - NNTPサーバーからの応答を待つ、秒単位での最大時間。 0に設定されると全てのIOオペレーションはブロックされます。 (デフォルト: 120) B - STDERRにデバッグ情報を出力することを有効にします。 B - もしリモート・サーバーがINNであれば、最初に nnrpdに接続し、デフォルトではCは リモートサーバーがinndになるよう、Cコマンドを発行します。 もしCオプションが値0で与えられると、このコマンドは送信されず、 接続はnnrpdに話しかけるままになります。 =back =head1 メソッド 特に記述がなければ、全てのメソッドはIまたはIを返します。 Iが処理が成功したことを意味します。メソッドが値を返すと 宣言しているときには、失敗ではIまたは空リストを返します。 =over 4 =item article ( [ MSGID|MSGNUM ], [FH] ) 指定された記事のヘッダ、空行、そして本文(テキスト)を取り出します。 Cが指定されると、それは適切なファイルハンドルであると予想され、 結果がそれに出力されます。成功したときにはtrue値が返されます。 Cが指定されなければ、成功したときの戻り値は、要求された 記事が入った配列へのリファレンスになります。配列の各エントリには 記事の行が入っています。 何も引数が渡されなければ、現在選択されているニューズグループでの 現在の記事が取り出されます。 Cは現在のニュースグループでの記事の数値による識別子で、 現在の記事のポインタを変更します。Cは記事のヘッダに現れる メッセージIDです。それはクライアントがCコマンドによって 提供されたリストから、他の記事で取得された参照から、あるいは なんらか他のコマンドへの応答で提供されるメッセージIDから Cを取得することが予想されます。 もしエラーがあれば、Cが返されます。 =item body ( [ MSGID|MSGNUM ], [FH] ) C
と同じですが、記事の本文だけを取り出します。 =item head ( [ MSGID|MSGNUM ], [FH] ) C
と同じですが、記事のヘッダだけを取り出します。 =item articlefh ( [ MSGID|MSGNUM ] ) =item bodyfh ( [ MSGID|MSGNUM ] ) =item headfh ( [ MSGID|MSGNUM ] ) これらはarticle(), body() そして head()に似ていますが、 要求されたデータを直接返すのではなく、記事をそこから読み込むための 結び付けられたファイルハンドルを返します。 =item nntpstat ( [ MSGID|MSGNUM ] ) CコマンドはC
コマンドに似ていますが、何もテキストを 返しません。グループの中のメッセージ番号で選択すると、Cコマンドは "現在の記事ポインタ"をテキストを送信することなく設定させます。 メッセージIDによって選択するためにCコマンドを使うことは適切ですが、 疑問が残ります。というのもメッセージIDによる選択は"現在の記事ポインタ"を 変更B<しない>からです。 "現在の記事"のメッセージIDを返します。 =item group ( [ GROUP ] ) 現在のグループを設定/取得します。もしCが与えられなければ、現在のグループに 関する情報が返されます。 スカラー・コンテキストではグループ名を返します。 配列コンテキストではグループ内の記事の数、先頭の記事の番号、最後の記事の番号、 グループ名が入ったリストになります。 =item ihave ( MSGID [, MESSAGE ]) CコマンドはクライアントがCというIDの 記事を持っていることをサーバーに伝えます。サーバーがその記事の コピーを求め、Cが与えられていれば、それは送信されます。 もし指定されていれば、サーバーがその記事を求めCが正常に 送信されたならば、Iを返します。 Cが指定されなければ、メッセージはLからの CとCメソッドを使って送信されなければなりません。 Cは行の配列または配列のリファレンスのどちらにもすることができます。 =item last () "current article pointer"を現在のニュースグループでの前の記事に設定します。 その記事のメッセージIDを返します。 =item date () リモートサーバ上の日付を返します。この日付はUNIXの時刻フォーマット (1970年からの秒数)になります。 =item postok () サーバーの最初の応答がポストを許可することを示して入ればCは Iを返します。 =item authinfo ( USER, PASS ) =item list () 全てのアクティブなニュースグループに関する情報を取得します。 結果はハッシュへのリファレンスになります。キーがグループ名、 それぞれの値が配列へのリファレンスになります。この配列の要素は:- そのグループでの最後の記事番号、グループでの先頭の記事番号、 そしてグループに関する情報フラグです。 =item newgroups ( SINCE [, DISTRIBUTIONS ]) Cは時刻の値、そしてCはディストリビューション・ パターンあるいはディトリビューション・パターンのリストへのリファレンスです。 結果はCと同じです。しかし返されるグループは、指定されていれば C以後、Cの中のディストリビューション領域の 1つに作成されたものに限定されます。 =item newnews ( SINCE [, GROUPS [, DISTRIBUTIONS ]]) Cは時刻の値。Cはグループのパターンあるいはグループの パターンのリストへのリファレンスになります。Cは ディストリビューション・パターンあるいはディストリビューション・パターンの リストへのリファレンスになります。 C以降、Cにマッチしたグループで、かつCに マッチするディストリビューションに、ポストされた全てのニュースの メッセージIDが入ったリストへのリファレンスを返します。 =item next () "現在の記事ポインタ"を現在のニュースグループでの次の記事に設定します。 その記事のメッセージIDを返します。 =item post ( [ MESSAGE ] ) ニュースサーバへ新しい記事をポストします。Cが指定され、ポストが 許可されていれば、そのメッセージは送信されます。 Cが指定されなければ、そのメッセージはLからの C と C メソッドを使って送信されなければなりません。 Cは行の配列あるいは配列へのリファレンスのどちかを設定することが できます。 =item postfh () 結び付けられたファイルハンドルを使って新しい記事をニュースサーバーに ポストします。もしポストが許可されていれば、このメソッドは ポストする記事の内容をprint()することができる、結び付けられた ファイルハンドルを返します。記事のポストが完了したときには明示的に そのファイルハンドルをclose()しなければなりません。そしてclose() 呼び出しからの戻り値は、そのメッセージが正常にポストされたかを示します。 =item slave () リモートサーバーに自分がユーザ・クライアントではなく、おそらく他の ニュースサーバーであると伝えます。 =item quit () リモートサーバーを終了させ、ソケット接続を閉じます。 =back =head2 拡張メソッド これらのメソッドはRFC977のドキュメントの中に入っていないコマンドを使います。 サーバーによってはこれらの全てはサポートしていないかもしれません。 =over 4 =item newsgroups ( [ PATTERN ] ) キーがCにマッチする全てのグループ名、あるいはパターンが指定されなければ すべてのグループ名。そしてそれぞれの値には、そのグループの説明のテキストが入ります。 ハッシュへのリファレンスを返します。 =item distributions () キーが全ての可能なディストリビューション名、そして値がディストリビューションの 説明であるハッシュへのリファレンスを返します。 =item subscriptions () ニュース・ユーザーが参加することが勧められるグループのリストが入った リストへのリファレンスを返します。 =item overview_fmt () Cによって返されるフィールドの名前が入った配列へのリファレンスを返します。 =item active_times () キーがグループ名、値がそのグループが作られた時刻と作成者のおそらくはEmailアドレス である識別子が入った配列へのリファレンスであるハッシュへのリファレンスを返します。 =item active ( [ PATTERN ] ) Cと同様。ただしパターンにマッチするアクティブなグループだけが返されます。 Cはグループパターンにすることができます。 =item xgtitle ( PATTERN ) キーがCにマッチする全てのグループ名、それぞれの値がそのグループの 説明であるハッシュへのリファレンスを返します。 =item xhdr ( HEADER, MESSAGE-SPEC ) 指定された全てのメッセージのヘッダ・フィールドC
を取得します。 戻り値はキーがメッセージ番号、それぞれの値にはそのメッセージの要求されたヘッダ のテキストが入ったハッシュへのリファレンスになります。 =item xover ( MESSAGE-SPEC ) 戻り値はキーがメッセージ番号、それぞれの値にはそのメッセージの概要(=overview) フィールドが入った配列へのリファレンスが入ったハッシュへのリファレンスになります。 フィールドの名前はCを呼び出すことによって取得することができます。 =item xpath ( MESSAGE-ID ) 指定されたメッセージが入っているサーバー上のファイルへのパス名を返します。 =item xpat ( HEADER, PATTERN, MESSAGE-SPEC) ヘッダのテキストがCにマッチするヘッダに制限されることを除けば 結果はCと同じです。 =item xrover XROVERコマンドは指定された記事の参照情報を返します。 キーがそのメッセージ番号、値がその記事からの行であるリファレンスであるハッシュ へのリファレンスを返します。 =item listgroup ( [ GROUP ] ) CあるいはCが指定されなければ現在のグループでの、 全てのアクティブなメッセージへのリファレンスを返します。 =item reader サーバーにあなたがリーダーであり、他のサーバーではないことを伝えます。 これはいくつかのサーバーによっては必須です。 例えばINNサーバーに接続し、伝送許可を持っているならば、あなたの接続は NNTPデーモンではなく、INNサーバーと伝送デーモンに接続します。 このコマンドを発行すると、伝送デーモンに制御をNNTPデーモンに渡させます。 いくつかのサーバーは、このコマンドを理解しません。しかしこれを発行し、 その応答を無視しても害はありません。 =back =head1 未サポート 以下のNNTPコマンドはこのパッケージではサポートされていません。そして そうする計画もありません。 AUTHINFO GENERIC XTHREAD XSEARCH XINDEX =head1 定義 =over 4 =item メッセージ指定(MESSAGE-SPEC) C<メッセージ指定>(MESSAGE-SPEC)はメッセージID、1つのメッセージ番号、あるいは 2つのメッセージ番号のリストへのリファレンスのいずれかになります。 Cが2つのメッセージ番号のリストへのリファレンスで、 範囲での2番目の番号が最初のもの以下であれば、範囲はそのグループでの 先頭のメッセージ番号以後の全てのメッセージを表します。 B<注意> Net::NNTPの以前のバージョンとの互換性のためだけに、メッセージ指定 は2つの番号のリストとして渡すことが出来ます。 これはもはや軽視されています。今はリストへのリファレンスを渡すべきです。 =item パターン CプロトコルはパターンにCフォーマットを使用します。 WILDMATフォーマットは、ファイル名を明確に表現するためのUNIX "find" コマンドで使われるフォーマットを元に、最初にRich Salzによって 開発されました。UNIXシェルがファイル名をマッチさせるのと同じ方法で パターンをマッチさせる単一のメカニズムを提供するよう開発されました。 マッチするかのテストのさい、パターンは暗黙のうちに、 各文字列の開始と終了に固定されます。 パターンとマッチがチェックされる元との間での厳格な1対1のマッチではなく、 5つのパターンマッチ演算子があります。 まず最初に0またはそれ以上の文字の任意の文字の並びにマッチする、 アスタリスクC<*>です。 2番目が1つの文字にマッチするクエスチョン・マークC。3番目は特定の 文字の集合を指定します。 集合は文字のリスト、あるいは範囲の開始と終了がマイナス(あるいはダッシュ)文字 によって区切られた文字の範囲、あるいはリストと範囲の任意の組み合わせ で指定されます。もし集合の始まりあるいは終わりであれば、ダッシュを 文字として集合に入れることも出来ます。この集合は角括弧(=[])で囲まれます。 集合の先頭の文字であれば、閉じ角括弧C<]>を集合で使うこともできます。 4番目の演算子は3番目の演算子の否定(NOT)と論理的に同じで、 3番目のと同じ方法で指定される内容に加えて、テストする文字列の 開き角括弧のすぐ内側に先頭のキャラット文字C<^>がつきます。 最後の演算子は開き角括弧C<[>、アスタリスク、バックスラッシュ、あるいは クエスチョンマークの特別な意味を無効にするためバックスラッシュを使います。 並びの中での2つのバックスラッシュは、評価された中では 特別な意味を持たない文字としてのバックスラッシュになります。 =over 4 =item 例 =item C<[^]-]> 閉じ角括弧(])、あるいはマイナス符号/ダッシュではない1つの文字に マッチします。 =item C<*bdc> 文字列"bdc"(クォートは除く)含めて文字列"bdc"で終わる全ての 文字列にマッチします。 =item C<[0-9a-zA-Z]> 印字可能な英数字のASCIIの1つの文字にマッチします。 =item C aで始まり、dで終わる4文字の文字列にマッチします。 =back =back =head1 参考資料 L =head1 作者 Graham Barr =head1 著作権(COPYRIGHT) Copyright (c) 1995-1997 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =for html
I<$Id: NNTP.pod,v 1.2 2011/01/27 13:15:11 iwai Exp $>