PerlIS for Win32
Perl初心者の部屋
hip communications inc.
PerlIS.dll
PerlISとはどんなものなのですか?
PerlISは(かつてGibraltarというコードネームだった)Microsoft
Internet Information Server用の高性能perlインタープリタです。
Microsoft Internet Information ServerはISAPIと呼ばれるAPIを使用します。
PerlIS.dllは効率を改善するため、このAPIを使用しています。
Microsoft IISはリクエスト毎にシングルスレッドを使用します。ですから、
リクエストが使用するリソースが少なければ少ないほどかかる時間も少なくなります。
PerlISをどうやって入手、インストールすればいいのですか?
PerlIS は99/2現在 Perl5.005ベースのバイナリーディストリビューション
ActivePerlに同梱されています。ActivePerlは、
ActivePerl downloadからダウンロードできます。
[訳注: Perl for Win32ビルド110配布ファイルにはファイナルリリース版が標準として
同梱されています。また、単体としては公開されていないようで、
上記サーバにはありません。]
また、Perlの互換版をダウンロードする必要があります。
PerlISと同じftpディレクトリにあります。インストールするには:
-
(必要なら)ビルドし、正しいperlのバージョンをインストールします。
(ビルドナンバはPerlISのと合致しているべきです。)[訳注:同梱されて
いるものを使用する限りこのコメントは無用でしょう。]
-
暫定ディレクトリにPerlIS.zip配布ファイルをunzip(展開/解凍)します。
[訳注:同梱されているものはzipファイルではないので、
このコメントも無用でしょう。]
-
コマンドプロンプトからPerlISに同梱されているinstall.batを実行します。
PerlISを拡張子(デフォルトは.pl)と関係付けるかプロンプトが聞いてきます。
[訳注:96/11現在のビルド110配布ファイルに付属のinstall.batを実行すると
This install script assumes that you have unpacked
Perl for Win32 into the final intended destination
directory. It will copy the executable and batch files
into a separate directory, but all documentation and
libraries remain where they currently are.
Do you wish to proceed? [Y/n]
というメッセージが出てきます。Y(リターンキーのみも可)と答えると
処理が続き、
print "Modify search path? [Y/n]";
とか聞いてきます。問題が発生せず、MS-IISが未導入の場合
No Microsoft Internet Information Server Installed
Continue to install PerlIS.dll? [Y/n]
と聞いてきます。
MS-IISでなければ、特にPerlISを使う必要はありません。
Yとすると、
Please choose a file extension to associate with PerlIS.dll.
Extension:
と聞いてきますので、関連づけを行います。
#ちゃんとインストールされたかどうか不安な人は、.\nttの
test.batを走らせてみましょう。まず、コマンドプロンプト(DOS窓)を開き、
\perl5\nttにディレクトリを移動して、testと入力してみてください。(^^
ちなみに私のWin95環境では、io\dupとop\execがFailedでした。
NTだけで機能するものはWin95ではサポートされないとか
機能しないとかのメッセージが返ってきます。
]
PerlISを使ってCGIスクリプトを実行するにはどうしたらいいのですか?
Microsoftの Internet Information Serverのリリースバージョンは
関連づけをサポートしています。
インストール手続きの間何もエラーがなければ、perl CGIスクリプトを実行する
のに必要なことは、URLでそれを直接参照することです。
インストール中に関連づけをするのに.plxという拡張子を選んだ場合
http://www.myhost.com/cgi-bin/myscript.plx
また、PerlIS.dllはGET Query_Stringのようにスクリプト名と一緒にURLの中で
直接参照されることが可能です。このメソッドのこういう使いかたには
強く反対します。
[訳注:IISはURLで参照するCGIスクリプトのお尻に?マークを
つけないとうまくいかないことがあるようです。詳細は
MS IIS(Internet Information Server)でのCGI
のQ3・Q4を参照して下さい。]
PerlISはエラーを同処理するのですか?
ローディング後PerlISが初めて出くわすエラーは、サーバのイベントログに
加えられるエントリを発生させます。
このエントリはそれから起こるいろいろなエラーを入れておくテキストファイルを
指し示します。
STDERR(標準出力)へのあらゆる出力もこのログファイルに書き込まれます。
このファイルは一般的にはPerlIS.dllと同じデェレクトリに保管されます。
PerlISでは何が機能しないのですか?
PerlISによって実行されるperlスクリプトはMS Internet Information Serverと
同じプロセス空間で実行されますので、PerlISの中で破壊される幾つかの
プロセス関連callがあります。
以下が現在のリストです;
- カレントワーキングディレクトリ:
実行されているperlスクリプトのカレントワーキングディレクトリは、
webサーバのワーキングディレクトリです。
これはサーバで走っている全ての他のperlスクリプトに影響を及ぼす可能性が
あるので、perlスクリプトで変更すべきではありません。
PerlISで走らせるperlスクリプトには絶対パス名が要求されます。
[訳注:これはビルド107で解決されているようです。]
- シェルエスケープ:
シェルエスケープやプロセスspawing callはどれもみな機能しないでしょう。
以下の機能が含まれますが(これだけに)限定されているわけではません。:
- system
- tick構文[訳注:バッククォート`hoge`によるコマンド実行とその戻り値の利用]
- NTSpawn
- exec とその全ファミリ
[訳注:perl.exeは別プロセスで実行されますので上記の制限はないようです。]
バグを見つけたと思った場合どうすればいいのですか?
これがベータバージョン[訳注:既に正式版の筈]であることを覚えておいて下さい。
バグが未サポートのperl機能やwebサーバの設定エラー等に関連していないことを
確認してください。
それから上記の壊れてしまうperlの特色の一覧を確認します。
まだ本物のバグがあると思う場合は、perl-win32ホームページからそれを
レポートすることができます。
バグレポートフォームの全フィールドに記入したことを確認して下さい。