● MacPerl で CGI アプリケーションを作る ●

WebSTAR や MacHTTP などの WWW サーバをしばらく運営していると,HTML ファイルをただ置いているだけでは飽きたらず,いっちょ CGI を使って何かやろうと思ってきますよね.UNIX だと C や csh などでできますが,Macintosh だとそうはいかない.AppleScript を覚えるのも面倒だし,C か何かでできないものかというあなた,MacPerl がとても便利.お望みのアプリケーションをこれで実現することができます.
というわけで,MacPerl で CGI アプリケーションを作りましょう.

MacPerl で CGI アプリケーションを作るには何が必要か?

まず,MacPerl が必要です.これがないと話になりません.2008年の06月現在,最新の MacPerl はバージョン5.6.1release2です.

MacPerl をダウンロードは Perl本家サイトからどうぞ.

http://www.perl.com/CPAN/ports/index.html#mac

いくつかモジュールがありますが,MacPerl 5.6.1r2 Web Installer (recommended) のダウンロードが順当でしょう.


--- 注:以下は,ver5.2.0当時の説明です.現在はMacを持っていないのです ---


インストールすると,"MacPerl ト" というフォルダができて,大量のファイルがでてきます.

大半はサンプルスクリプトです

MacPerl フォルダは,WWWサーバと同じのフォルダに入れておく必要はありません.実行ファイルはもちろんサーバのフォルダにセーブしないといけませんが.

“半角カタカナ”は なんかヤラシイので(これは気分の問題ですが),フォルダ名は "MacPerl" に変えておきましょう.



プログラミングの基本といえば

ボタンを押すと,"hello world!"という文字列が返ってくるプログラムを作ります.プログラミングの宿命ですね(笑).プログラムは以下の通りです.TeachText や SimpleText か何かで書いてください.

--------------Begin program(この行は書いたらだめですよ)
print "hello world!";
--------------End program

この 1 行だけです.ややこしいことを考える必要はありません.
セーブしたら,MacPerl 本体をダブルクリックし,さっき書いたプログラムのファイルを開きます.ここで文法のチェックをするなり,テスト Run するなりしてください(ここでは必要ありませんが).で,"Save as"を選び,"Type:" を "CGI Script" に指定します.このとき,アプリケーションファイルの名前を "xxx.cgi" とするのが普通です.

スクリプトのデバッグ中は面倒くさいんですコレ(^^;

すると,このMacPerl 実行ファイルアイコンようなアイコンのついたアプリケーションができるはずです.確認してみてください.

次に,そのアプリケーションを実行するHTML文を書きます.form タグを使うわけですが,こちらは多くの方が紹介しているので,あまり詳しくは説明しません.form の method には get と post があるわけですが,まずはシンプルな get を使用します.ただし,get では半角にして512文字分しか送れないので注意してください.
このプログラムでは,プログラム側が何か文字列を受け取るということはないので,type は hidden にします.

--------------Begin HTML
<form action="test.cgi" method=get>
<input type=hidden name=hoo value=bar>
<input type=submit value=Push!>
</form>
--------------End HTML

実際に作ってありますので,下のボタンを押してみてください.

もうちょっと気のきいたアプリケーション

をつくります.ここでは,年月日を入力すると曜日を出力するというアプリケーションにします.
まずは,HTML から.
--------------Begin HTML
年月日を入力してください(グレゴリオ歴)<br>
<form method="get" action="day.cgi">
年:<input name="year">
月:<input name="month">
日:<input name="day">
<input type=submit value="Submit"><input type=reset value="Reset">:
</form>
--------------End HTML
これも実際にありますので,入力してみてください.

年月日を入力してください(グレゴリオ歴)

年:
月:
日:

これを実現する perl プログラムはここにあります.



日本語を使うには?


おハシの国のひとですから,ここはやっぱり日本語を使いたいものです.
日本語の処理で,まず問題になるのが漢字コード.自前で変換するのはちと骨がおれますが, "jcode.pl"というプログラムを使うことで一気に解消されます.開発者のKazumasa Utashiroさんに感謝.

jcode.pl はここにあります.

取ってきたら,そのまま"MacPerl"フォルダの中の"lib"フォルダに放りこみます.

これがホントに便利なんすよ,jcode.pl

これで準備は完了です.いよいよプログラムです.

まず,プログラムの先頭に,

require "jcode.pl"

という行を書いてください.まあお約束みたいなもんです.

さて,jcode.pl で漢字コードを変換する方法ですが,変換したい文字列が "$hoo" という変数に入っているとすると,

&jcode'convert(*hoo, 'jis'); # ← JIS に変換する場合
&jcode'convert(*hoo, 'sjis'); # ← SJIS に変換する場合
&jcode'convert(*hoo, 'euc'); # ← EUC に変換する場合

これで $hoo の中身の漢字コードが変換されます(なんて簡単!).
ついでに,

$code = &jcode'getcode(*hoo);

とすると,$code に $hoo の中身の漢字コードが入ります.

では,サンプルのプログラムです.
適当に日本語を入力してください.



このHTMLは以下のとおり.
--------------Begin HTML
適当に日本語を入力してください.<br>
<form method="get" action="kanji.cgi"><br>
<input name="input"><br>
<input type=submit value="Submit"><input type=reset value="Reset"><br>
</form>
--------------End HTML
このプログラムはここにあります.



「訪問者リスト」を作ってみよう

さっきのプログラムを応用して,超シンプルな訪問者リストをつくってみました.
みなさんの感想をお寄せいただくと幸いです.


お名前:
感想などありましたら:


ついでですから,このHTMLも書いておきましょう.
--------------Begin HTML
<form method="get" action="visitor.cgi"><br>
お名前:<input name="input"><br>
感想などありましたら:<input name="input" size=80><br>
<input type=submit value="Submit"><input type=reset value="Reset"><br>
</form>
--------------End HTML

このプログラムはここにあります.
訪問者リストはこちら



知ってて損はないサイト


MacHTTP/WebStar について

MacHTTPによる個人Webサーバ構築法---新潟大学文芸学部中国思想史研究室 さん
超簡単 Mac OS XのローカルでCGI (SSIもPHPも)---Toshiyuki Mori さん

Perl 全般について
perl.com---なにはともあれ.
Perl入門---KENT さん


[五目八方]