'01.1.30 ('02.5.21更新)
Webサーバを立ち上げて、CGI実行環境を作ってとか、とかく難しく考えがちですが、実はMacだと簡単にできるのです。(OS 9までの方法です。OS Xについては別ページで)
これだけです。あとはMacPerl用にプログラムの手直しですね。(これが一番面倒だったり)
(ここでは取り上げませんが、Mac上ではAppleScriptのCGIも動きます)
Mac用のPerlを使います。日本語に対応したMacJPerlというのもありますが、一般的にインターネット上のサーバの多くで使われる、jcode.plやJcode.pmを使った日本語対応とは相容れないので、ここでは使いません。
下記のどちらか。*にはリリースナンバー(1〜)が入ってます。
すでにTCP/IPによるLANに接続していて、CGIをLANに公開してもいいならここは設定しません。
メニューの設定.../複製...で新しい名前 (localhost) をつけた新しい設定を作ります。

127.*.*.*はローカルのスタンドアロン専用IPアドレス(ループバックアドレス)。
経由先はAppleTalkでも可能です。
ここをインターネットの設定のままだと全世界に公開することになります。

開始ボタンをクリック。
OS (8以上) をインストールしたまま削除・移動してなければMacintosh HD (起動ディスク) 直下に「Web ページ」フォルダがあります。適当なフォルダに変えてもかまいません。ここがWebサイトのルートディレクトリになります。
ここの「ホームページ」はディレクトリを指定した時に表示されるページです。インターネットだと「index.html」の方が一般的ですね。変える場合はあらかじめHTMLのページを作っておきます。「なし」にすればディレクトリ内のファイルリストを表示します。

インターネットに接続する時は「停止」しておかないと全世界に公開ってことになります。LAN接続の場合はアドレスを覚えておきます。

MacPerlのメニューのEdit/Formatで日本語フォントを選べばスクリプト中の日本語を表示できますが、Shift JISで記述してある場合だけです。

LAN接続ならWeb 共有に表示されるアドレスでアクセスします。
アプリケーション形式に保存されたスクリプトファイルとMacPerlが起動し、CGIが実行されます。
UNIX用のプログラムを動かすなら、手直しが必要になるでしょう。ごく基本的なUNIXのPerlとMacPerlの違いを並べてみました。
| 比較項目 | UNIX | Mac |
|---|---|---|
| プログラムファイルの改行コード | LF | CR |
| プログラムの中の改行コードの意味 | \nはLF | \nはCR |
| パスの区切り | / | : (HTTPで呼び出すファイルの区切りはUNIXと同じ) |
| ルートディレクトリ | /から始まる | 無い。ディスク名からのパスならある。 |
| カレントディレクトリ | . | : |
| カレントディレクトリにあるファイル | ./hoge.txt かパスが通っていれば hoge.txt | :hoge.txt と hoge.txt |
| 一つ上のディレクトリ | ../ | :: |
| 二つ上のディレクトリ | ../../ | ::: |
| Perlへのパス | 1行目に記述 | なくても平気 |
| $ENV{PATH_INFO} | hoge.cgi/path/info | hoge.cgi$/path/info CGI名直後に$必要 |
| CGIのパスの?以下の引数データ | shiftや@ARGVからでも取り込み可能 | $ENV{QUERY_STRING}のみ |
| Perlのバージョン | 5.005か5.6が多い | UNIX版の5.6.1相当(5.6.1)か5.004相当(5.2.0r4) |
| symlink関数 | リンク先は実在しなくてもよい。 | 存在しないファイル、ディレクトリのリンク(エイリアス)は作れない。 |
| flock関数 | 使えない環境もある | 使えない。Mac独自のロックなら可能。 |
UNIXのPerlとMacPerlのスクリプトの差異を解消するために、Mac::FileSpec::UnixishやFile::BasenameやFile::Specというモジュールが使えます (MacPerl5.6.1のlibフォルダに.pm拡張子のファイルが入ってます)。詳細は、それらのモジュールファイルをMacPerl付属のShuckで開いて説明を読みましょう。