PageID:Perl/Perl-FAQ1J

Perl初心者の部屋 Perl FAQ 序章 第1章 第2章 第3章 第4章 第5章

Perl-FAQ Part1J

これは、comp.lang.perl.announceに投稿されたものを翻訳、転載したものです。 ご質問等は、comp.lang.perl.misc、fj.lang.perl等のニュースグループへ お願い致します。
#簡単なことでしたら、最下部のメールボックスへどうぞ。

翻訳:「Perl FAQ 翻訳グループ」
同メンバ:
樋口さん、上原さん、高田さん、関谷さん、妻鹿さん、三島

------------------------------------------------------------------------------
Stephen P Potter        Pencom Systems Administration         AMP Incorporated
spp@peach.epix.net      spp@psa.pencom.com                steve.potter@amp.com
Home: 717-540-0131      Pager: 1-800-759-8888, 547-9561     Work: 717-986-5401
                Systems Administation: It's a Kind of Magic
------------------------------------------------------------------------------

--
Archive-name: perl-faq/part1
Version: $Id: part1,v 2.9 1995/05/15 15:44:17 spp Exp spp $
Posting-Frequency: bi-weekly
Last Edited: Wed Aug 16 21:22:01 1995 by spp (Stephen P Potter) on temples.syrin
x.com

Archive-name: perl-jfaq/part1 Version: $Id: part1,v 1.1 1996/05/24 21:45:18 sekiya Exp $

第1章 一般的な情報、および入手方法

1.1) Perlって何ですか

1.2)perl4 と perl5 ってなんですか、違いがあるんですか?

1.3)perl5 で perl4 に追加された機能は何ですか?

1.4) perl5 のドキュメントはどこから入手できますか?

1.5)perl5 では perl4 のスクリプトは使えなくなりますか?

1.6) Perl の言語仕様はいつ安定するんですか?

1.7) "perl" と "Perl" の違いは何ですか?

1.8) perl はプログラムですか、それともスクリプトですか?

1.9) perl を習うのは大変ですか?

1.10) 何でも perl でプログラムすべきですか?

1.11) Tcl や Python、REXX といった他のスクリプト言語と perl との違いは 何ですか?

1.12) Internet (FTP) のどこから Perl を入手できますか?

1.13) email 経由で Perl を入手する方法は?

1.14) UUCP 経由で Perl を入手する方法は?

1.15) perl を手に入れるその他の方法は?

1.16) perl は 〜 というマシンに移植されていますか?

1.17) Solaris 上でコンパイルするには? S

1.18) NeXT 上でコンパイルするには?

1.19) Perl にはどんなエクステンション(拡張)がありますか、それらはどこ から入手できますか?

1.20) dbperl って何ですか、どこから入手できますか?

1.21) どの DBM を使うべきですか?

1.22) SNMP を使える perl はありますか?

1.23) ISO か ANSI 公認の Perl はありますか?


目次

Part 1 - 一般的な情報、および入手方法

目次

1.1) Perl って何ですか?

Perl は Larry Wall* によって書かれた、コンパイルされるスクリプト言 語です。

以下、perl(1) man ページの冒頭の記述より:

Perl は、テキストファイルを走査し、情報を抽出し、それをもとに レポートを出力するために最適化されたインタプリタ言語です。また、 多くのシステム管理の仕事にも適しています。この言語は、美しさ (小さい、エレガント、最小) よりも、実用的であること(使いやすい、 効率的、完全) を狙っています。この言語は、(とにかく作者の意見 では) C、sed、awk、sh の最も優れた特徴を合わせたものなので、 それらの言語に通じた人ならは、ほとんど労力なしで使えるはずです。 (言語歴史学者はまた、csh、Pascal、さらに BASIC-PLUS の痕跡に気 づくでしょう) 式の文法は、C の文法にきわめて近くなっています。 大部分の UNIX ユーティリティと違って、perl はデータの大きさを 恣意的に制限しません。すなわち、メモリさえあれば perl はファイ ルを丸ごと一つの文字列として読み込むこともできます。再帰の深さ は無制限です。そして、連想配列で使われるハッシュテーブルは、性 能を低下させないように、必要に応じて拡大します。Perl は洗練さ れたパターンマッチング技術を使って、大容量のデータを非常に高速 に走査します。テキスト走査に最適化されているとはいえ、perl は バイナリデータを扱うこともできます。そして、(dbm が使えるのな ら)dbm ファイルを連想配列のように扱うこともできます。setuid さ れた perl スクリプトは、様々なつまらないセキュリティホールを予 防するデータフロー追跡機構によって、C プログラムより安全です。 普通なら sed や awk や sh を使う問題だが、今回はそれらの能力を 越えている、またはもう少し速く走らせる必要がある、という場合、 そしてくだらないことを C で書きたくないとき、perl が役に立つで しょう。また、sed と awk のスクリプトを perl スクリプトに変換 するトランスレータもあります。さて、宣伝は十分でしょう。

目次

1.2) perl4 と perl5 ってなんですか、違いがあるんですか?

perl4 と perl5 は、perl言語の異なったバージョンです。perl4 はひと つ前のリリースで、perl5 は「次世代の」perl です。perl5 では、perl のソースコードは、一から完璧に書き直されました。それはモジュール化 され、オブジェクト指向になり、整理され、そして最適化されて、ほとん ど古いソースコードの面影はありません。しかし、そのインタフェースは ほとんど同じで、前のリリースに対する互換性は非常に高いものになって います。

目次

1.3) perl5 で perl4 に追加された機能は何ですか?

もしあなたが (主要な ftpサイトのどれかから) 最新のソースを取得した なら、man ページ (セクション1pと3pmにインストールされるでしょう) がぎっしりつまったディレクトリを見つけるでしょう。ここには、相違点 や新しい機能、旧版との互換性などについてたっぷり記述されています。 しかしながら、ここでいくつかの主要な新機能と、旧版と互換性がない部 分について挙げておきましょう。

* 使い勝手の向上:
Perl コードは、ずっと読みやすいスタイルで書くこ とができるようになった。正規表現は、最短一致や条件指定が使えるよ うなるなど、大幅に強化された。暗号のような変数名 (これも今までど おりサポートされる) は "English" モジュールを使うことによって覚 えやすい別名で使うことができる。これにより、新しいスクリプトは読 みやすく記述でき、しかも古いスクリプトも依然として実行可能である。 エラーメッセージやオプションの警告は、よりわかりやすくなり、数多 くのありふれた間違いを検出する。
perldiag(1) マニュアルページを参照。これには、perl が漏らすあらゆるぼやきそれぞれに対する Larry Wall* の簡潔な解説が含まれている。

* 単純化された文法:
新しい yacc用文法は前のものの半分のサイズになっ た。多くの気ままな文法ルールは整理された。予約語の数は 1/3 に減 らされた。

* レキシカル・スコープ:
Perl の変数は、C の自動変数のように、レキ シカル・スコープの中で宣言できるようになった。これは効率面で大き な改善である上、よりよいプライバシーにも貢献する。perlfunc(1) の 中の my() エントリを参照。

* 任意にネストできるデータ構造:
一人前の多次元配列。配列の要素を含 むあらゆるスカラ値は、他のあらゆる変数やサブルーチンへのリファレ ンスを格納することができるようになった。名前なし変数やサブルーチ ンを簡単に作ることができる。perlref(1) を参照。

* モジュール性と再利用性:
Perl ライブラリは、様々なパッケージの間 で容易に共有できるモジュール、という意味で定義されるようになった。 パッケージは、モジュールが提供するインタフェースの一部、またはす べてを取り込む (import する) ことができる。perlmod(1), perlsub(1)、そして Exporter(3pm) を参照。

* オブジェクト指向プログラミング:
パッケージはクラスとしての機能を 持つ。今までの方式のまま、ほとんど新しい構文の導入なしで、動的な 多重継承と仮想メソッドがサポートされる。ファイルハンドルはいまや オブジェクトとして扱われる。perlobj(1), perlmod(1)、そして FileHandle(3pm) を参照。

* 組み込み性と拡張性:
Perl は簡単に C/C++ アプリケーションに組み込 むことができる。そして文書化されたインタフェースを通じて、あなた のルーチンから呼び出したり、呼びだされたりすることができる。XS プリプロセッサは、あなたの C/C++ ルーチンを簡単に Perl に接続す る方法を提供する。モジュールの動的なロードがサポートされた。 perlapi(1), perlcall(1)、そして DynaLoader(3pm) を参照。
[HTML版維持管理者注:
Version 5.002からはXSに関するページはperlxsになっています。]

* POSIX 対応:
新しい重要なモジュールは POSIX モジュールである。こ れは、利用可能なすべての POSIX ルーチンと定義へのアクセスを提供 する。POSIX(3pm) を参照。

* パッケージコンストラクタとデストラクタ:
新しい BEGIN と END ブロッ クは、パッケージがコンパイルされている時点、およびプログラムが終 了した時点で制御をとらえる手段を提供する。退化したケースとして、 -p または -n スイッチを使っているとき、これらはまさに awk の BEGIN と END と同じように働く。perlmod(1) を参照。

* いろいろな DBM 実装の同時利用:
perl プログラムは今や DBM, NDBM, SDBM, GDBM、そしてバークレイ DB ファイルのすべてに対して、同じス クリプトの中でアクセスすることができる。dbmopen のインタフェース は、すべての変数を、アクセスメソッドが定義されたオブジェクトクラ スに結び付けることができるように一般化された。tie/untie が dbmopen/dbmclose に代わって推奨される。perlfunc(1)tie() エン トリと DB_File(3pm) マニュアルページを参照。

* サブルーチン定義はオートロード可能:
AUTOLOAD メカニズムは、未定義のサブルーチンの呼び出しを許容する。perlsub(1) マニュアルペー ジの中の Autoloading のセクションを参照。
[HTML版維持管理者注:
通常未定義のサブルーティンを呼び出すと「サブルーティンがない」という致命的コンパイルエラーとなりますが、実際に使う時に読み込むことによってこれを免れる仕組みです。]

* 正規表現の強化:
量指定子(quantifier)の直後に "?" を置くことで最短 一致を表すことができる。開き括弧の直後の "?" は、後方参照なしの グルーピングを意味し、続く 1文字によって目的が決められる。 (?:a|b|c) は、後方参照を生成することなく、a, b または c に一致す る。(?=stuff) は、次に来るのが "stuff" であることを確かめるため、 先読みを実行し、(?!nonsense) は、次に来るのが "nonsense" でない ことを確かめるための先読みを行なう。読みやすさのために空白やコメ ントを埋め込むことができる。従来のすべての正規表現に対して上位互 換である、一貫した拡張メカニズムが追加された。変数は、\Q や quotemeta 関数を使って、パターンに展開することができるようになっ た。これは \U と似ているが、英数字以外にバックスラッシュを付ける。 パターンマッチの新しいフラグ m と s は、複数行または単一行として マッチングすることを強制する。"s" は "." を "\n" に一致させる。 \A と \Z アンカは、複数行かどうかにかかわらず、文字列の先頭と末 尾に一致する。\G は、直前の m//g や s///g が終ったところに一致す る。

* -w(警告) オプションは、より役にたつ情報を出力する。

* リファレンスとオブジェクト(例は t/op/ref.t を参照)

* => がコンマの同義語となった。これは、連想配列の初期化子や、サブ ルーチンへの名前付き引数のような、対になった引数をグループ化する ことを助ける。

* 先行宣言されたものも含むすべての関数は、リスト演算子または 単項演算子として処理される。カッコは任意。

* フラット化されたインタプリタ:
perl4 の eval.c と perl5 の pp.c を比較せよ。perl4 の 900行のインタプリタと perl5 での 1行を比較 せよ。

* eval はサブルーチン呼びだしとして処理されるようになった。 したがって、例えば return することもできる。

* format の変数リストは、do {} ブロックを使って複数行に広がること ができる。

* スクリプトが直接起動されなかったときでも、#! 行のフラグは解釈 される。

* ?: は左辺値となった。

* リストコンテキストは && と || の右側や、?: の第2第3引数まで広が るようになった。

* パッケージ・デリミタは ' よりも :: が推奨される。

* 新しい and と or 演算子。これらは && や || と同じだが、コンマよ り低い優先順位を持つ。そのためリスト演算子と一緒に使うのにより都 合が良い。

* 新しい関数、abs(), chr(), uc(), ucfirst(), lc(), lcfirst()

* "require 番号" は、最低そのバージョンであることをチェックする。

* qw// は split(' ', q//) と等価である。

* グロブへのリファレンスの代入は、そのグロブがリファレンス・タイプ に応じて示す単一要素を置き換える:

	    *foo = \$bar, * foo = \&bletch;
* ファイルハンドル・メソッドがサポートされた。
	output_autoflush STDOUT 1;
* オートロード・スタブは、goto &realsub によって本来のサブルーチン に置き換わることができる。

* どのパッケージにおいても、AUTOLOAD ルーチンを宣言しておくことに よって、サブルーチンを遅延定義することができる。そのパッケージの 中で、存在しないサブルーチンが呼ばれたとき、AUTOLOAD ルーチンが 呼び出される。

* "use" と "no" は多くの機能を持つ。"use Module LIST" は "BEGIN { require Module; import Module LIST }" の短縮で、"no" を 使うと代わりに "unimport" を呼ぶ以外は全く同じである。"use integer" や "use strict [vars,refs,subs]" のさまざまなバリエーショ ンは新しいモジュールを通じて実装された。

(このセクションは Tom Christiansen* に感謝)

目次

1.4) perl5 のドキュメントはどこから入手できますか?

perl の完全なドキュメントは Perl 配布キットの中に入っています。ま た以下のサイトから入手することもできます。PerlDoc の ps ファイルは 240ページもあるので注意!!
    マークアップ (HTML) 形式:
    	http://www.metronet.com/0/perlinfo/perl5/manual/perl.html
    	http://web.nexor.co.uk/perl/perl.html      (ヨーロッパ)

    PostScript:
        ftp://ftp.cis.ufl.edu/pub/perl/doc/PerlDoc.ps.gz
        ftp://ftp.uu.net/languages/perl/PerlDoc.ps.gz
        ftp://www.metronet.com/pub/perlinfo/perl5/manual/PerlDoc.ps.gz
        ftp://ftp.zrz.tu-berlin.de/pub/unix/perl/PerlDoc.ps.gz (ヨーロッパ)
        ftp://ftp.cs.ruu.nl/pub/PERL/perl5.0/PerlDoc.ps.gz     (ヨーロッパ)
        ftp://sungear.mame.mu.oz.au/pub/perl/doc/PerlDoc.ps.gz(オーストラリア)
		7/15/95 現在、アクセスできません

TeXinfo (Emacs) 形式: ftp://www.metronet.com/pub/perl/perl5/manual/perl5-info.tar.gz

[HTML版維持管理者注:上記の記述は古くなっています。 現時点では、大半のものがCPANで入手可能です。 CPANについては、「Perlモジュールリスト」和訳を参照してください。
ちなみに、5.000版のマニュアルの和訳は 「Perl5 Manual Pages 和訳」にHTML版とSJIS版zipファイルが、 ftp://ftp.sowa.is.uec.ac.jp/pub/Lang/perlにEUC版(perl5.000man-j.tar.gz 215,462)があります。]

目次

1.5) perl5 では perl4 のスクリプトは使えなくなりますか?

一般的に言って、そんなことはありません。しかし、ある種の悪い古い慣 習は認められないこともあります。以下は、perl4 と perl5 の互換性が ない部分のうち、最も重要なところです。詳細は perltrap(1) を見て下 さい。

* ダブルクォート文字列中の "@" は ***常に*** 展開される。配列を意 味しない "@" は必ずエスケープしなければならない: Mail("foo@bar.com") は Mail("foo\@bar.com"); と書く必要がある。 コンパイラはこれを検出する。

* "open FILE || die" は "open(FILE) || die" と書かなければならない。 コンパイラはこれを許すが、あなたが直すまで文句を言い続ける。

* ($や@などで始まらない)裸のワードはもはや(必ずしも)文字列ではない: それらは実際、その値を持つ文字列としてではなく、(コンパイル時に 存在すれば)その名前の関数呼びだしとして処理される。シグナルハン ドラをチェックすること。'use strict subs' プラグマが役に立つだろ う。(strict(3pm) 参照)

* 優先順位の関係から "shift @x + 20" は "shift(@x) + 20" でなけれ ばならない。同じように "$y = scalar keys %foo + 30" は代わりに "$y = scalar keys(%foo) + 30" でなければならない。

* 内部シンボルテーブルは、与えられたすべてのパッケージに対して %{PACKAGE::} と呼ばれる。これは以前は %{_PACKAGE} だった。

* $1 や、文字列の末尾を過ぎた部分に適用された substr() のような、 リードオンリーの変数に書き込むことは、もはやできなくなった。

* いろいろな悪い慣習は、警告メッセージを発生させる。

* パッケージ・デリミタは ' から :: に変更された。' の使用は非難さ れるが、依然として可能である。:: の使用は、注意を怠るとスクリプ トに問題を起こすかもしれない。(特に /etc/passwd のようなコロンを デリミタとしたデータファイルを扱う場合)

目次

1.6) Perl の言語仕様はいつ安定するんですか?

Perl コードが凍結されるのはどの時点になるか聞かれたとき、Larry は次の ように答えました:

Perl の再設計の一部は、言語それ自体の凍結度合をより増やしたり減ら したりできるようにすることです。それはもちろん完全に凍結することは ないでしょうが、私は言語の核の部分の変化の割合は漸近的に 0 に近付 くと思っています。実際、時はながれて、いまや我々は公式なエクステン ションの仕組みを持っています。現在、言語の核部分にあるいくつかのこ とがらは、エクステンションとして(透過的に)切り出すことができます。 これは、すでに dbmopen() で実際に起こっています。

私はまた、Henry Spencer が "後継システム症候群" と呼ぶものについて、 ずっと自分自身注意し続けています。。これはなんでもかんでも追加機能 としてぶちこんで、結果として OS 360 のような、つぎはぎだらけの化け ものにしてしまう病気のことです。あなたは、Perl 5 の新機能はすべて 最小主義的であることに気づくでしょう。特にオブジェクト指向機能では、 C++ スタイルのメソッド・コールという、たったひとつの新しい構文が加 えられただけです。

    : Perl の背景となるアイデアは、高速なテキスト処理、システム管理、
    : そしてすぐ使える言語、ですべてであるべきです。もし Perl がそんな
    : に大きく、そして複雑になれば、それはもう高速では走らないし簡単に
    : 使うこともできません。これは誰の利益にもならないでしょう。
  
私のモットーは、はじめからずっと「壊れていないのなら直そうとするな」 です。私は、それらの Perl を Perl たらしめている特徴がなくならない ようにずっと一所懸命努力してきました。そして同時に、多くの文法をな めらかに改良してきたのです。新しい yacc ファイルの大きさは、古いも のの約半分になり、公式な予約語の数は 1/3 に減りました。すべての組 み込み関数は、リスト演算子か単項演算子に統一(統二?)されました。
    : 私は Perl の特徴の多くが本当に好きです。しかし、Perl が長期的に
    : 見て使いやすくあるためには、その特徴がそのままであり続けなくては
    : なりません。私はこの 1年以内にらくだ本を買いましたが、あと 1年も
    : しないうちに、それは時代遅れになってしまうような気がします。
  
らくだ本がカバーしている範囲の Perl はそうたいして変わっていません。 古いスクリプトの大部分はまだ走ります。Perl のバージョン 1.0 時代の 多くのスクリプトも依然、走ります。我々は間違いなくらくだ本を改訂し ますが、新しい man ページは分割されたので、あなたが欲しい新情報を 捜し出すのがとても簡単になっています。

我々は Perl5 に移行する際、若干のまずい機能 (misfeatures) を使えな くしました。この手の変更をするのに、これが最初で最後の機会のように 思われたのです。ドキュメントの中に互換性がない部分のリストがありま す。

    : もし言語の心臓部が変化し続けるのなら、定期的に 20台以上のマシン
    : で Perl をリコンパイルするのが大変なだけでなく、長期に渡って役に
    : 立つスクリプトを書くのは困難です。(そしてまた新しい本を買い続け
    : るとすれば。私は *私が* 見つけたどの perl 5 のドキュメントにも記
    : 述がない新機能について聞かされ続けています。)
  
あなたは、4.036 がとても安定したプラットフォームだと考えている人た ちが多いことを知るでしょう。

しかし、Perl 5 は特別のケースなのです。私はこのために何年も働いて きました。(これが 4.036 があれほど安定している理由の一つなのです!) 多くの変更があり、それらの大部分は改善であって欲しい思っています。 私は変化には痛みが伴うものだと考えています。しかしながら、あなたの bin ディレクトリに番号付のバージョンができるのはそれが理由なのです。 これによって、あなたが望むなら、少しづアップグレードすることができ ます。そして、そういうわけで私は、-w スイッチが多くの非互換につい て警告を発するようにしたのです。

そしてすべてに優先して、私は、あなたが古い機能を使うために新しい機 能について多く知る必要がないように保とうとしてきました。あなたは、 あなたの *知識* も少しづつアップグレードすることができるのです。

エクステンションの仕組みは、今後の進化的な役割の大部分を引き継ぐよ う設計されています。そして、もしあなたが、ある特定のエクステンショ ンを持っていないと、そのことを正しくはっきりと知ることができるよう にできています。

    : Perl コンパイラを書く計画はあるんでしょうか? インタプリタとして
    : の Perl が多くのアプリケーションにとって素晴らしいのと同様、多く
    : のスクリプトをプリコンパイルできることは素敵なことでしょう。(も
    : ちろん、undump でできることは知っています。しかし、undump は 
    : Perl と一緒に配布されていませんし、私はコピーを見つけたこともあ
    : りません。) perl のライブラリや動的ロード可能なモジュールを作る
    : ことは、この方向への一歩のように思えます。
  
はい。Perl 5 の設計の一部はコンパイラを書くことを *可能にする* こ とでした。それはエクステンション・モジュールとしてさえ、できるんじゃ ないかと私は思います。誰か修士論文のテーマを探していませんか?

[HTML版維持管理者注:
既に 「the Perl Compiler Kit, Version alpha1」として comp.lang.perl.anounce で発表されています。 また、バージョン 5は5.002になり、かなり安定しています。96/05現在。]

要約すると、あなたが思いつきそうな懸念のほとんどすべては、すでに (少なくとも)考えられています。完全な世界では、すべての懸念は完全に 聞きとどけられるでしょう。しかしこの世界では、我々はただこつこつと やり抜かなければなりません。

目次

1.7) "perl" と "Perl" の違いは何ですか?

32! [ ord('p') - ord('P') ] (生命、宇宙、そして万物に対する究極 の質問への答えである 42 ではないでしょう? ;)

*訳注: "42" という数の意味については "The Hitchhicker's Guide to the Galaxy" を参照。

Larry は現在、"Perl" を厳密な意味での「言語」を表すことに使い、 "perl" をその実装、すなわち今のインタプリタとして使います。これゆ え Tom の名文句があるのです。「perl だけが Perl を構文解析できる」

一方で、大小文字の対応という審美的見地からは、"C", "Pascal" に対応 して大文字の "Perl" が、同じく "awk", "sed" に対応して小文字の "perl" が要求されます。また、端末画面で大小を頻繁に切替えるよりも、 活字印刷において "Perl" をタイプする方が楽ということもあります。:-)

言いかえると、大して重要ではないということです。特に誰かがこの言語 について話しているのを聞いているだけのときには。大小文字を耳で聞き 分けるのは難しいですから。

目次

1.8) perl はプログラムですか、それともスクリプトですか?

それは、あなたが perl のバイナリについて話しているのか、それとも perl で書いたものについて話しているのかによります。そして実際、こ の定義すら必ずしも真実ではありません。

「標準の」UNIX 用語法では(大ざっぱに言って)次のようになっています: プログラムは一度だけマシンコードにコンパイルされ、何度も実行される、 スクリプトは使うたびに、毎回(プログラムによって)翻訳される。しかし ながら、コンピュータ・システム上で実行されるように書かれたものは何 でもプログラムだ、という人たちもいます。Larry は、石のように固定さ れ中身を変更することができないものはプログラム、逆に中に入っていっ てハックできるものならスクリプト、と考えます。もちろん、もしあなた がソースコードを持っているなら、それは何でもスクリプト、ということ になるでしょう。 ;)

概して、これはたぶん全然どうでもいいことでしょう。これらの用語は入 れ換えられるような使われ方をされています。あなたが、どちらかが特に お気に入りなら、そちらを使って下さい。あなたが自分を perl プログラ マだと呼びたいのなら、プログラムと呼びましょう。自分を perl スクリ プタと呼びたいのなら、スクリプトと呼びましょう。(少なくとも) Randal* と私は、それをハックと呼ぶでしょう。(質問 2.10 を参照 ;)

Larry は、スクリプト(台本)は役者に与えるものだが、プログラムは観客 に与えるものだ、と言っています。

目次

1.9) perl を習うのは大変ですか?

全然そんなことはありません。多くの人たちが、Perl を学ぶのは大変簡 単だということに気がついています。これには少なくとも 3つの大きな理 由があります。

最初の理由として、Perl の大部分は、あなたが(たぶん)すでに慣れ親し んできた標準的なユーティリティ、ツール、そして言語から派生してきた、 という点が挙げられます。もしあなたに、 C 言語や標準 C ライブラリ、 シェル、sed や awk、などの知識があるなら、Perl を学ぶのは簡単で楽 しいでしょう。

Perl を学ぶのが簡単だという理由の二つめは、あなたが何か役に立つ結 果を得るためには、Perl のほんの一部分さえ知れば良い、ということで す。事実、ひとたびあなたが以下をマスターすれば

    	#!/usr/local/bin/perl
	 print "Hello, world\n";
あなたは Perl スクリプトを書き始めることができます。実際、あなたは Perl に関するすべてのことを知り尽くす必要はまったくないでしょう。 (または、できないでしょう。) あなたがもっと凝った機能 (C の構造体 やネットワーキングのような) を使う必要がある、または使いたい、と感 じたときに、それらについて学ぶことができるのです。Perl の習得曲線 は急勾配ではありません。特に UNIX の背景知識を持って有利なスタート を切った場合には。むしろその曲線は穏やかで緩やかです。しかし、それ は確実に長く続くのです。

三つめの理由は、あなたは自分のスクリプトの結果をただちに得ることが できる、ということです。(例えば C や Pascal といった)普通のコンパ イラ言語と違って、ちょっとした変更を加えるたびに頻繁にプログラムを リコンパイルする必要はありません。Perl は実験や、テスト/デバッグを すばやく、かつ容易に行なえるようにしてくれます。この実験の容易さが、 よりいっそう習得曲線を平らにします。

もしあなたが C や UNIX についてまったく知らない場合、習得曲線は急 勾配になるでしょう。しかし、そのときあなたが Perl から学んだことは、 C ライブラリ、UNIX システムコール、正規表現、そして連想配列、など などといった他の領域にも持ち越されるでしょう。Perl を知ることは UNIX を知ることであり、逆もまた同様なのです。

目次

1.10) 何でも perl でプログラムすべきですか?

ええ、もちろん。実際、あなたは以下のバイナリ sed, awk, cc, gcc, rm, ls, cat... ええと、いっそ /bin ディレクトリごと消してしまうべ きでしょう。

冗談はさておき、もちろんそんなことをすべきではありません。どんな仕 事をするときも、手元にあるその目的に適した道具を使うべきです。金づ ちでも、ねじを板切れに打ち込めるからといって、たぶんあなたはそうし たくはないでしょう。

「(ある仕事を) Perl でできますか?」という質問への答えは、ほとんど 「はい」である、というのは真実ですが、これは必ずしもそうするのが良 い、という意味ではありません。多くの人たちにとって、Perl はシェル プログラミングの非常に良い代わりとなっています。またある一部の人た ちにとっては、彼らが C でやっていることの代わりを提供します。しか し時には、Perl が最適な選択ではないことだってあります。

目次

1.11) Tcl や Python、REXX といった他のスクリプト言語と perl との違いは 何ですか?

REXX は、IBM のシステム上で初めてのインタプリタ・プログラミング言 語です。Python は、Guido van Rossum* によるインタプリタ・プログラ ミング言語です。TCL は John Ousterhout* の組み込みコマンド言語で、 当初、組み込みコマンド拡張のためだけに設計されましたが、後にもっと 大きなアプリケーションにも使われるようになりました。多くの人にとっ て TCL の最も面白い特徴は、X ベースのツールをインタプリタから使え るようにする tcl/tk ツールセットでしょう。また TCL を、その 拡張である "expect" のために使う人もいます。

言い争い(flamage)を避けるため、もしあなたが本当にこの質問への答を 知りたいのなら、たぶん最も良い方法は、ひとそろいの等価な仕事をする コードを書いてみることです。3つの言語とも、それらについて(願わくば 言い争うためでなく)習うためのニュースグループを持っています。

これら 3つやその他の言語についてもっと知りたいのなら、あなたは David Muir Sharnoff* が comp.lang.misc, comp.sources.d, comp.archives.admin、そして news.answers ニュースグループに投稿し ている "Catalog of Compilers, Interpreters, and Other Language Tools" (コンパイラ、インタプリタ、その他の言語ツールのカタログ) も 調べてみた方がいいかもしれません。これは数多くの異なった言語を幅広 く取り扱っています。(注意: 彼は Perl の構文を「ぶさいく」と考えて います)

目次

1.12) Internet (FTP) のどこから Perl を入手できますか?

Perl は、どの comp.sources.misc アーカイブからでも入手可能です。も し望むなら、これらを探すのに archie サーバ(news.answers に投稿され る "alt.sources FAQ" を参照) を利用することもできます。
      バージョン 4:
	Volume	Issues	パッチレベルと注意事項
	------	------	------------------------------------------------
	  18    19-54	Patchlevel 3, 最初の投稿.
	  20	56-62	Patches 4-10	

      バージョン 5:
    	Volume	Issues	パッチレベルと注意事項
    	------	------	-----------------------------------------------
    	  45	64-128	最初の投稿, patchlevel 0.
1993年から、Perl や Perl 関連専門のアーカイブが急に増加しました。 Larry は、netlabs にある (perl4.036 と perl5 の両方のための)公式な 配布用サイトを保守しています。おそらく、最も大きいアーカイブはフロ リダ大学(University of Florida) にあるものでしょう。以下のサイトは ソースがある可能性が高い順に並んでいます。
	サイト	ディレクトリと注意事項	            	    IP	    	    
	--------------------------------------------- 	    -------	    
    北アメリカ:
	ftp://ftp.netlabs.com/pub/outgoing/perl5.0/ 	    192.94.48.152
	ftp://ftp.cis.ufl.edu/pub/perl/src/5.0/	    	    128.227.100.198
    	ftp://prep.ai.mit.edu/pub/gnu/	    	    	    18.71.0.38
		7/15/95 現在、最新ではありません
    	ftp://ftp.uu.net/languages/perl/    	    	    192.48.96.9
		7/15/95 現在、最新ではありません
    	ftp://ftp.khoros.unm.edu/pub/perl/  	    	    198.59.155.28
		7/15/95 現在、最新ではありません
    	ftp://ftp.cbi.tamucc.edu/pub/duff/Perl/	    	    165.95.1.3
	ftp://ftp.metronet.com/pub/perl/sources/    	    192.245.137.1
    	ftp://genetics.upenn.edu/perl5/	    	    	    128.91.200.37

    ヨーロッパ:
    	ftp://ftp.cs.ruu.nl/pub/PERL/perl5.0/src/	    131.211.80.17
    	ftp://ftp.funet.fi/pub/languages/perl/ports/perl5/  128.214.248.6
    	ftp://ftp.zrz.tu-berlin.de/pub/unix/perl/   	    130.149.4.40
        ftp://src.doc.ic.ac.uk/packages/perl5/	    	    146.169.17.5
  
    オーストラリア:
    	ftp://sungear.mame.mu.oz.au/pub/perl/src/5.0/	    128.250.209.2

    南アメリカ (ftp://prep.ai.mit.edu/pub/gnu のミラー):
    	ftp://ftp.inf.utfsm.cl/pub/gnu/	    	    	    146.83.198.3

    もしアジアや日本にサイトがあるなら、教えてください。よろしく!

    また、ftp 以外の方法で perl を取ってくることもできます。
  
        http://src.doc.ic.ac.uk/packages/perl5/	    	    146.169.17.5
        gopher://src.doc.ic.ac.uk/0/packages/perl5/ 	    146.169.17.5
[HTML版維持管理者注:上記の記述は古くなっています。
現時点では、大半のものがCPANで入手可能です。 CPANについては、「Perlモジュールリスト」和訳を参照してください。ちなみに、国内のCPANミラーサイトは、ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/です。]

目次

1.13) email 経由で Perl を入手する方法は?

以下は、知られている ftpmail サイトの一覧です。どうか、これらのう ち、あなたから最も近いサイトを利用するようにし、またそこから最も近 い ftp アーカイブを指定するようにして下さい。これらのサイトの多く は、それ自身ですでに Perl を持っています。これらのサイトの利用方法 を知るためには、そのアドレス宛に "help" という単語を含む email を 送って下さい。
	アメリカ:
	    マサチューセッツ:	ftpmail@decwrl.dec.com
	    ニュージャージー:	bitftp@pucc.princeton.edu
	    ノースキャロライナ:	ftpmail@sunsite.unc.edu

	ヨーロッパ/イギリス:
	    ドイツ:		ftp.uni-stuttgart.de
				ftp@vx.gmd.de
	    イギリス:		ftpmail@doc.ic.ac.uk

	オーストラリア:		ftpmail@cs.uow.edu.au
Henk P Penning* は、もしあなたがヨーロッパにいるのであれば、以下を 試してみることを提案しています (もしあなたがイギリスかドイツにいる のなら、上の一覧にあげたサーバのひとつを使うべきですが):
        Email: 'mail-server@cs.ruu.nl' 宛に、以下の内容を含んだメッセー
               ジを送って下さい:
	 begin
	 path your_email_address
	 send help
	 send PERL/perl5.0/INDEX
	 end
あなたのメッセージが通常の From: 行を含んでいるのならば、path 行は省略することができます。あなたは、ヘルプファイルと Perl 関 連のものが入っているディレクトリのインデックスを受けとるでしょ う。

もし他の方法がすべてダメなら、Larry にメールを送ればたいてい大丈夫 です。

目次

1.14) UUCP 経由で Perl を入手する方法は?

現在、UUCP 経由で Perl を入手する方法はありません。誰か知っている 人がいたら、私に連絡して下さい。OSU サイトはサービスを停止してしま いました。

目次

1.15) perl を手に入れるその他の方法は?

別な手段として UUNET を使う方法があります。ただし、彼らはあなたに 課金します。あなたはこのことを正式に警告されました。さて、以下はそ の広告です:

		UUNET ソースアーカイブへの匿名アクセス

			     1-900-GOT-SRCS

    *訳注: これは米国内の電話番号で、通話料以外にサービス料が課金され
           る、日本のダイアルQ2 に相当するものです。
UUNET は今や、加入者でない方にも、UNIX 関連ソースの大規模なコレク ションへのアクセスを提供します。1-900-468-7727 に電話して、パスワー ドなしの "uucp" でログインすれば、誰でも UUNET のオンライン・ソー スコレクションのどれにでも uucp することができます。利用者には 1分 間につき 40セントが課金されます。利用料金は、次回の電話料金の請求 書の中に含まれるでしょう。

uunet!/info/help というファイルには利用方法の説明が書かれています。 uunet!/index/ls-lR.Z というファイルには、利用可能なファイルの完全 な一覧が含まれており、これは毎日更新されています。Z で終っている名 前のファイルは、使う前に uncompress する必要があります。 uunet!~/compress.tar ファイルは uncompress プログラムの C ソースを 含んだ tar アーカイブです。

このサービスは、UUNET やその他のサービスとの接続を維持することなし に、最新のソースのリリースを取得する、経済的な手段を提供します。 この 900 番号につながっているすべてのモデムは Telebit T2500 モデム です。これらのモデムは PEP, V.32 (9600), V.22bis (2400), Bell 212a (1200), and Bell 103 (300) といった、すべての標準的なモ デムスピードをサポートします。PEP または V.32 を使った場合、GNU C コンパイラのような 1.5 MB のファイルは、接続料が $10 かかるでしょ う。55 MB の完全な X Window System V11 R4 の場合、接続時にかかる費 用は、$370 しかかかりません。これらの費用は、公式テープの配布料よ りも安く、今やモデム経由で入手することができるのです。

		      UUNET Communications Services
		   3110 Fairview Park Drive, Suite 570
			 Falls Church, VA 22042
			 +1 703 876 5050 (voice)
			  +1 703 876 5059 (fax)
			    info@uunet.uu.net
目次

1.16) perl は 〜 というマシンに移植されていますか?

Perl は、単に hint ファイルと Configure スクリプトの命令に従うだけ で、事実上すべての Unix マシン上で走ります。この自動コンフィグレー ション・スクリプトは、ソースコードのマシン依存の部分を修正すること によって、幅広い多様なプラットフォーム上で Perl をコンパイルするこ とを可能にしています。大部分の Unix と VMS システムでは、バージョ ン 5 の perl は、移植作業を必要としません。あなたのマシン上で Perl をコンパイルしてみて下さい。もし問題が発生したら、README ファイル を注意深く調べてみて下さい。それでもうまくいかなければ、 comp.lang.perl.misc と comp.sys.〜 にメッセージをクロスポストして みましょう。おそらく、すでにその問題を解決したことがある人が、あな たを助けることができるでしょう。

バージョン 5 は、現在ごく小数の(ベータ版の)移植しかありませんが、 Perl4.036 は、すでに数多くの Unix 以外のシステムに移植されました。 以下のすべては ftp://ftp.cis.ufl.edu/pub/perl/src/ にミラーされて います。以下は(知られている)公式な配布場所です。これらの移植に関し て何か質問がある場合、(できれば)直接、その移植者に連絡をとるように して下さい。

* MS-DOS 用のバイナリとソースは、[130.179.8.47] ftp://ftp.ee.umanitoba.ca/pub/msdos/perl/perl4 から入手できます。現在、半ダースほどの異なった MS-DOS 用の移 植があります。BigPerl4 (v4) は、Watcom C/C++^32 コンパイラ (32ビット、フラットメモリモデル C コンパイラ) でコンパイルさ れた perl4.036 で、以下の特徴を備えています:

	    * 最大 32MB のメモリが利用可能。
	    * 仮想記憶をサポート。
	    * Windows 3.1 で動作。
	    * perl デバッガが利用可能。
	    * バークレイ DB をサポート。GDBM はサポートされなくなった。

	  なお、BigPerl4 の最新バージョンは、以下のような SimTel のミ
          ラーサイトのどれかからも入手できます:
	  (ftp.ee.umanitoba.ca には必ずしも最新バージョンがあるとは限
	  りません)

		ftp://oak.oakland.edu/SimTel/msdos/perl/

	  Perl 5.000 をもとにした bigperl のベータテストバージョンは以
	  下のサイトから取得できます:

    	    ftp://ftp.einet.net/pub/perl5
    	    ftp://ftp.khoros.unm.edu/pub/perl/msdos
    	    ftp://ftp.ee.umanitoba.ca/pub/msdos/perl/perl5
このベータ版 bigperl には、a2p と s2p の移植版も含まれていま す。

* Windows/NT 用バイナリは ftp://ftp.intergraph.com/pub/win32/perl、または主要な NT アー カイブのどれからでも入手できます。これは NT 3.5 用にコンパイ ルされていますが、Win95 上でも動くようです。これは NT レジス トリの情報を読むことができます。Dean Troyer* は、SAM と Event Log の情報を読むことができるように拡張する作業中です。 彼の、現在進行中の成果は ftp://pmip.dist.maricopa.edu/pub/nt から取得できます。

[HTML版和訳維持管理者注:この記述はちょっと古くなっています。
詳細については、「WindowsNT/95でPerl : Perl for Win32 (NTPerl)」を参照してください。]

	* Macintosh 用のバイナリとソースは、[130.59.1.40]
    	   ftp://nic.switch.ch/software/mac/perl から入手できます。
	  バージョン 4.1.3 は、perl4.036 を MPW C コンパイラでコンパイ
	  ルしたものです。
	    * Mac_Perl_413_src.sit.bin	    ソース
	    * Mac_Perl_413_tool.sit.bin	    MPW ツール
	    * Mac_Perl_413_appl.sit.bin	    スタンドアロン・
アプリケーション Macintosh Perl について議論するメーリングリストがあります。 "mpw-perl-request@iis.ee.ethz.ch" に連絡して下さい。

また、Timothy Murphy* は Think C を使って perl を Macintosh に移植しました。これはおそらくすでに見捨てられ、MPW 版の方が 選ばれましたが、今でも [134.266.81.10] ftp://ftp.maths.tcd.ie/pub/Mac/perl-4.035/ から入手できます。

Matthias Ulrich Neeracher* は、perl5 を Macintosh へ移植する 作業を行なっています。PowerPC バージョンが ftp://err.ethz.ch/pub/neeri/MacPerlBeta から入手できます。

[HTML版和訳維持管理者注:
Mac版については、MacでPerlのページも参照してください。]

* OS/2 用のソースも ftp://ftp.cis.ufl.edu/pub/perl/src/4.0/os2 から入手できます。ただ、これはもう見捨てられたようで、公式配 布版の方に追加統合されました。perl5 のソースの中の os2 ディ レクトリを参照して下さい。

* VMS システムでは、標準の配布キットで直接構築することができる はずです。

* Amiga 用のソースは ftp.cis.ufl.edu から入手することはできま せんが、Aminet アーカイブならどこでも、確実に見つけることが できます。

    	    * ftp://ftp.wustl.edu/pub/aminet/dev/lang/
    	    * ftp://ftp.uni-erlangen.de/pub/aminet/dev/lang/
    	    * ftp://ftp.doc.ic.ac.uk/pub/aminet/dev/lang/
    	    * ftp://ftp.funet.fi/pub/languages/perl/ports/perl4/amiga
目次

1.17) Solaris 上でコンパイルするには?

以下の説明は、perl バージョン 4 のためのものです。Perl バージョン 5 は、もっと簡単にコンパイルできるはずです。もしそうでなかったら、 Perl の移植作業者たちのメーリングリスト (perl5-porters@nicoh.com) にメールを送って下さい。

John Lees* の報告:

私は Solaris 2.1 と 2.2 beta、そして 2.2 FCS の上で perl を作 りました。path から /usr/ucb を外し、どの BSD/UCB ライブラリも 使わないようにして下さい。必要なのは -lsocket, -lnsl, -lm だけ です。あなたは Solaris 2.0 用の hint を使えますが、2.1 用のは 間違っています。vfork を使わないで下さい。-I/usr/ucbinclude を 使わないで下さい。この結果は私にとってはうまく動いていますが、 もちろん、いくつかの BSD 固有の機能はサポートされません。

Casper H.S. Dik* の報告:

あなたは /usr/ucblib と /usr/ucbinclude へのすべての参照を削除 しなければなりません。そして solaris_2.1 の hint を無視して下 さい。これは間違っています。vfork を undefine することは、コン パイラを混乱させますが、おそらくやらなければなりません。cc を 使う場合、util.c/tutil.c を -O 付きでコンパイルしてはなりませ ん。私は次のライブラリだけを使いました: -lsocket -lnsl -lm (-lmalloc には問題があります)

Michael D'Errico* の報告:

あなたが Solaris 2.x を使っているのなら、シグナルハンドリング が壊れています。もし、あなたが 'ripper' のようなシグナルハンド ラを設定していると、それは最初のシグナルがキャッチされた後に忘 れ去られてしまうでしょう。これを直すためには、Perl をリコンパ イルする必要があります。'#include ' ディレクティブが でてくるすべてのファイルで、その直後に '#define signal(x,y) sigset((x),(y))' を加えて、もう一度 make して下さい。

目次

1.18) NeXT 上でコンパイルするには?

Andreas Koenig* によれば、NeXTstep 3.2 上では、perl4.036 と perl5.000 の両方とも附属の hint ファイルを使ってコンパイルできます。

しかしながら、Bill Eldridge* は perl4.036 を NeXTstep 3.0 上で動か す助けとして、以下のメッセージを提供しています。

NeXT 上で perl をコンパイルするためには、ANSI と BSD のヘッダ を一緒にする必要があります:

        cd /usr/include
        mkdir ansibsd
        cd ansibsd
        ln -s ../ansi
        ln -s ../bsd
それから、NeXT 用のコンフィグレーション説明に従って、すべての -I/usr/include/ansi や -I/usr/include/bsd という記述を、 -I/usr/include/ansibsd に書き換えます。

目次

1.19) Perl にはどんなエクステンション(拡張)がありますか、それらはどこ から入手できますか?

人気のあるエクステンションには、ウィンドウ、グラフィック、データベー スに関するものなどがあります。主要なサイトの多くは、普通 ext とい うディレクトリに、エクステンションのアーカイブを持っています。入手 できるエクステンションのリストは、あまりにも頻繁に変更されるので、 ここでは、個々のエクステンションではなく、サイトとディレクトリをリ ストしておくことにしました。もっと詳しい情報のためには、あなたに最 も近いアーカイブを調べてみて下さい。
      ftp://ftp.cis.ufl.edu/pub/perl/ext
    	(ftp://ftp.cis.ufl.edu/pub/perl/src/5.0/ext にもリンクされてい
	ます)
      ftp://ftp.khoros.unm.edu/pub/perl/extensions/
      ftp://ftp.metronet.com/pub/perlinfo/perl5/
      ftp://ftp.cs.ruu.nl/pub/PERL/perl5.0/ext
      ftp://black.ox.ac.uk/src/ALPHA/
 
目次

1.20) dbperl って何ですか、どこから入手できますか?

たくさんのデータベース指向のエクステンションが Perl で書かれました。 基本的にこれらは、データベースライブラリをリンクするために、usub メカニズム(配布ソースの usub/ サブディレクトリを参照) を使います。 これによって、Informix, Ingres, Interbase, Oracle, Sybase の組み込 み関数を呼び出せるようにしています。

以下はさまざまなエクステンションの作者の一覧です:

名前 対象 DB 作者 -------- ----------- ---------------------------------------- ?Infoperl Informix Kurt Andersen (kurt@hpsdid.sdd.hp.com) Ingperl Ingres Tim Bunce (timbo@ig.co.uk) and Ted Lemon Interperl Interbase Buzz Moschetti (buzz@bear.com) Isqlperl Informix William Hails, bill@tardis.co.uk Oraperl Oracle Kevin Stock (kstock@Auspex.com) Pgperl Postgres Igor Metz (metz@iam.unibe.ch) *Sqlperl Ingres Ted Lemon (mellon@ncd.com) Sybperl Sybase Michael Peppler (mpeppler@itf.ch) Uniperl Unify 5.0 Rick Wargo (rickers@coe.drexel.edu) ? これはまだ存在してるのでしょうか? * Sqlperl は Ingperl の中にとりこまれたようです

Buzz Moschetti* は、データベースに依存しないやり方で問い合わせを書 くことができるような、高いレベルのインタフェースを作るプロジェクト を組織しました。もしこのようなプロジェクトに興味があるようなら、 <perldb-interest-request@vix.com> にメールを送って、 "perldb-interest" メーリングリストに登録してもらうように頼んでみま しょう。

以下は Buzz からのちょっとした宣伝です:

Perl は Larry Wall によって開発された、強力な文字列、スカラ、 配列処理の機能を持つインタプリタ言語で、「sh(1) と C の間の機 能的な溝をうまく埋める」ものです。リレーショナル DB 操作は、典 型的なテキスト指向処理なので、perl はそのデータの流れを扱うの に特に適しています。その C ソースコードは無料で入手可能で、数 多くのプラットフォーム上で動作し、開発者が言語の基本的な関数群 を拡張するための、ユーザ定義関数という入口を持っています。 DBperl グループは、リレーショナル DB を操作するために、SQL モ デルに基づく標準化された perl 拡張関数群 (例えば db_fetch(), db_attach()) を作ることによって、この言語の能力を活用しようと しています。これにより、Sybase, Oracle, Ingres, Informix, Interbase といった、さまざまなポピュラーな RDMS エンジンへの ポータブルな perl インタフェースを提供します。 理論的には、高レベルインタフェースで動的 SQL インタプリタを実 装している DB エンジンならどれでも、perl フロントエンドと結合 可能です。しかし、現時点では前述の 5つの DB エンジンのためだけ のバックエンドしか存在しません。

DBperl エクステンションの公式アーカイブは ftp.demon.uk:/pub/perl/db です。そこは進化中の DBperl API 仕様の ホームです。以下は、そこにある最新の README からの抜粋です:

    DBI/    	DBI アーカイブのホーム。DBI メーリングリストに加入する
		には、perldb-interest-REQUEST@vix.com 宛にリクエストを
		送って下さい。

    DBD/        DBI のためのデータベースドライバ
     
    Oracle/      By Tim Bunce (未完成です!) 
    Ingres/      By Tim Bunce (まだ始まってません!) 
 
    mod/           Perl 5 のその他のモジュールとエクステンション

    Sybperl/    By Michael Peppler, mpeppler@itf.ch

 
    perl4/         Perl 4 エクステンション (usub C インタフェースを使用)
 
       oraperl/   ORACLE 6 & 7  By Kevin Stock, kstock@auspex.com 
       sybperl/   SYBASE 4      By Michael Peppler, mpeppler@itf.ch
       ingperl/   INGRES        By Tim Bunce timbo@ig.co.uk and Ted Lemon
       isqlperl/  INFORMIX      By William Hails, bill@tardis.co.uk
       interperl/ INTERBASE     By Buzz Moschetti, buzz@bear.com
       oraperl/   ORACLE 6 & 7  By Kevin Stock
				(残念ながらもうネット上にはありません)
       sybperl/   SYBASE 4      By Michael Peppler, mpeppler@itf.ch
       ingperl/   INGRES        By Tim Bunce timbo@ig.co.uk and Ted Lemon
       isqlperl/  INFORMIX      By William Hails, bill@tardis.co.uk
       interperl/ INTERBASE     By Buzz Moschetti, buzz@bear.com
       uniperl/   UNIFY 5.0     By Rick Wargo, rickers@coe.drexel.edu
       pgperl/    POSTGRES      By Igor Metz, metz@iam.unibe.ch
 
       btreeperl/ NDBM perl エクステンション。
			By John Conover, john@johncon.com
       ctreeperl/ C-Tree perl エクステンション。
			By John Conover, john@johncon.com
       duaperl/   X.500 ディレクトリユーザエージェント。By Eric Douglas.
  
    scripts/       Perl と shell スクリプト
  
       rdb/       RDB は ASCII ファイルのための perl RDBMS です。
			By Walt Hobbs, hobbs@rand.org 
       shql/      SHQL は対話的 SQL データベースエンジンです。
			シェルスクリプトとして書かれており、SHQL は 
			SQL コマンドを解釈して、それらのコマンドに基づ
			いてフラットファイルを操作します。
			By Bruce Momjian, root@candle.uucp 
       xbase/     xBase スタイルファイル(dBase III) にアクセスするため
			の Perl スクリプト
 
 
   refinfo/       参考情報 
      
       sqlsyntax/ SQL1 と SQL 2 用の Yacc と lex シンタックスと C ソース
		コード。
		(ftp.uu.net:/pub/uunet/published/oreilly/nutshell/yacclex より)
		および、ドラフト版 SQL3 シンタックス。
		(Jeff Fried + より)
       formats/   Lotus 1-2-3 .WK1 のようなファイルフォーマットの詳細
 
    また、ftp.demon.uk からは、いくつかの non SQL データベースへの 
    perl インタフェースも入手可能です。以下のものが含まれます:

    ディレクトリ対象システム		著者と注意事項
    ----------- ------------		--------------
    btreeperl	NDBM エクステンション	John Conover (john@johncon.com)
    ctreeperl	CTree エクステンション	John Conover (john@johncon.com)
    duaperl	X.500 DUA		Eric Douglas
    rdb		RDBMS			Walt Hobbs (hobbs@rand.org)
    shql	SQL エンジン		Bruce Momjian (root@candle.uucp)

目次

1.21) どの DBM を使うべきですか?

配布された状態では、Perl(バージョン 5) には様々な DBM パッケージ (SDBM, 古い DBM, NDBM, GDBM, バークレイ DBM) へのインタフェースが 付いてきますが、それら自体は提供されていません。しかし、そのどれも が FTP 経由で簡単に入手可能です。SDBM は、附属していることが保証さ れています。比較のために、AnyDBM_File(3pm)DB_File(3pm) を参照 して下さい。

目次

1.22) SNMP を使える perl はありますか?

snmperl が Guy Streeter (streeter@ingr.com) によって書かれ、1993年 の 2月下旬に comp.protocols.snmp に投稿されました。これは以下の二 箇所のアーカイブのどちらかで見つけることができます。
    Host liasun3.epfl.ch

	Location: /pub/net/snmp
	       FILE -rw-rw-r--       3407  Aug 11 1992  snmperl.README
	       FILE -rw-r--r--      17678  Aug 11 1992  snmperl.tar.Z

    Host ftp.cis.ufl.edu
	Location: /pub/perl/scripts/snmp
以下は README の要旨です:

このディレクトリには、perl から呼び出し可能な C サブルーチンを追加 するソースコードが含まれています。これらのサブルーチンは、SNMP の "get", "getnext", "set" 関数を実装しています。それらは CMU の配布 自由な SNMP パッケージ(version 1.1b) を使っています。

使い方:
呼び出し可能なインタフェースには、4つのサブルーチンが定義されてい ます。snmp_get, snmp_next, snmp_set, snmp_error です。 snmp_get と snmp_next は、それぞれ GET と GETNEXT 操作を実装してい ます。最初の 2つの呼び出し引数は、ホスト名とコミュニティ文字列です。 ホスト名として、そのホストの IP アドレスをドット表現した ASCII 文字 列を使うこともできます。残りの引数は変数のリストです。変数をどのよ うに指定するかについては、CMU パッケージのドキュメントを見て下さい。 snmp_set も同じようにホスト名とコミュニティ文字列を引数にとります。 残りの引数は、変数名、変数の型、変数の値の三つ組みのリストです。 変数の型は、"INTEGER" や "IpAddress" のような文字列です。 snmp_get, snmp_next, snmp_set は、変数と値を交互に含んだリストを返 します。snmp_get と snmp_next のリターン値においては、存在しない変 数は単に省略されるでしょう。snmp_set は、もし指定した変数の一つが 存在しない (または read-only) 場合、呼び出しが完全に失敗します。 snmp_error は、もっとも最近の snmp_get|next|set 呼び出しに関する エラー情報を含んだテキスト文字列を返します。(もしエラーが発生して いれば)

その他の注意:
私は、CMU のライブラリが stderr に書き込んだり、直接 exit() を呼ん でいるところをすべて見つけたわけではありません。 私が mib.c に行なった変更は、呼出元への戻り値での変数の値のフォー マットに影響を与えています。私が説明的な接頭詞を取り去ったので、そ の文字列は値だけを含むようになりました。 列挙型は、記号表現(括弧に囲まれた数値表現が後ろにつく) の文字列 として返されます。

配布と所有権:
perl と CMU SNMP パッケージは、それぞれに独自の著作権声明書があり ます。それらを読んで下さい。私がやったことに関しては、フリーで明快 です。つまり、あなたがやってないところをあなたが書いたと言わないで 下さい。そして、あなたが変更したところを私が書いたと言わないで下さ い。

Guy Streeter
streeter@ingr.com
April 1, 1992 (4月バカじゃないよ!)

目次

1.23) ISO か ANSI 公認の Perl はありますか?

いいえ。Larry は perl より先に自分が公認されるんじゃないかと思って います。

*訳注: 「公認する」の certify には「医師が精神異常だと認定する」と いう意味もある。:-)



ご意見、ご要望は、 電子メールまたは 投稿にお願い致します。

ホームページへ戻る。