Windows 環境で Perl を利用したい場合、おそらく多くの人は「Windows Perl」あたりで検索をかけると思うので、ActivePerl が一般的だと思います。インストーラが用意されているので、何も考えずにインストールできますし、勝手に実行パスも通してくれますし、モジュールのインストールも GUI で行えますし、まぁ、ほとんどの場合これで問題ありません。
そこに、後から XAMPP を導入して動かそうとした場合、実行パスの問題から Perl CGI がうまく動作しません。ジャンクションを設定したり、Perl 自体をビルドする方法もありますが、もっとお手軽に、ファイルを一つコピーするだけで済ませる覚書きです。
多くの Perl CGI スクリプトの shebang 行は #!/usr/bin/perl
となっていて、これを XAMPP 環境で動作させると、Apache サーバは X:\usr\bin\perl.exe
*1を起動しようとします。XAMPP に含まれる Perl も、ActivePerl でインストールした Perl も、大抵はここに置かれていないので、ほとんどの環境ではエラーになります。その対処方法として;
X:\usr\bin
に perl.exe が置かれたディレクトリのジャンクションを作成します ⇒ Windows上で「#!usr/bin/perl -w」のままMovable Typeを利用するX:\usr\bin
に置かれるように Perl をインストールします。ActivePerl の場合、インストール パスを X:\usr
と指定すればOK。X:\usr\bin
に置かれるよう、ソースからビルドする方法もあります ⇒ Windowsで/usr/bin/perlを実現する方法: 小粋空間
ActivePerl をインストール済みだったり、Perl の実行環境にパスが通っていて、コマンド プロンプトで perl -v
と実行して Perl が起動するような場合には、もっと手っ取り早い方法があります。X:\usr\bin
ディレクトリを作成し、Perl のインストール ディレクトリから perl.exe をコピーするだけです。ショートカットでは動作しませんので*2、ファイル自体をコピーしてください。
Perl スクリプトの実際の処理は、perl516.dll といった DLL が担っており、perl.exe は単にこの DLL に処理を投げるだけのものです。したがって DLL の置かれたディレクトリにパスさえ通っていれば、perl.exe はどこに置かれていても問題ありません。この特性(?)を利用します。
メリットは、ファイル一つをコピーするだけで、どこにでも移動できる点、X:\usr\bin
以下のディレクトリに Perl 以外の物を放り込める点などです。デメリットは、Perl のバージョンが変わると、コピーした perl.exe も忘れずに更新しないと動かなくなる点です*3。