.d8888b. .d8888b. 8888888
d88P Y88b d88P Y88b 888
888 888 888 888 888
888 888 888
888 888 88888 888
888 888 888 888 888
Y88b d88P Y88b d88P 888
"Y8888P" "Y8888P88 8888888
PCP => Perl CGI Program (ming)
Version 1.0
Q2.2: xyzモジュールがどう機能するのかどうやって推し測れば いいのですか?
Q2.3: Perl4で利用できるCGIやWWWライブラリは何がありますか?
Q2.4: Perl5で利用できるCGIモジュールには何がありますか? どれを利用すべきでしょうか、又その理由は?
Q2.5: こんなにたくさんのCGIperlライブラリが何故オブジェクト指向に なっているのですか? 私はこのオブジェクト指向(以下OOと略)がちっともわかりません。 非プログラマが利用できるもっと簡単なライブラリはないのですか? どの位難しいのですか?
本当はあなたがやるつもりがあるかどうかにかかっているのです。 一般にはCGIモジュールは重い処理をするCGIスクリプト向けに 使用されるべきでしょう。 簡単なスクリプトは、自分自身でやったり、 CGI Lite (現バージョンは v1.62)を使う方がずっと簡単で早いでしょう。 本当に望むのであれば、旧Perl 4 cgi-lib.plライブラリを使うことさえ可能です。
大半のモジュールはモジュール自体にmanページ [訳注:Windowsでいうヘルプファイルに近いもの]が埋め込まれています。 上記のケースでは、pod2manスクリプトを使ってmanページを見ると よいでしょう。:
% pod2text name_of_module.pm
% pod2man name_of_module.pm | nroff -man | more
[訳注:この機能はPerl for Win32等にはありません。UNIX用です。]
Perl4用に最も広く利用されているCGIライブラリは、Steven Benner作の cgi-lib.pl です。
また、LincolnはWebとCGIについて優れた本を書いています。タイトルは How to Set Up and Maintain a World Wide Web Siteです。
これら三つのモジュール全てに複数フォームデータのデコード能力が ついています。(例:ファイルアップロード)
実際には全然難しくないのです。手っ取り早い入門書としては、 Tom Christiansenの Easy Intro to Using Perl Objects があるので参照して下さい。
上記で述べたCGIモジュールは、使うのは朝飯前レベルです! ここで、 CGI Liteを使ってフォームデータを出力する簡単な例を示します。:
#!/usr/local/bin/perl5
use CGI_Lite;
$cgi = new CGI_Lite;
%data = $cgi->parse_form_data;
print "Content-type: text/plain", "\n\n";
foreach $key (keys %data) {
print $key, " = ", $data{$key}, "\n";
}
exit (0);
注意:あなたのシステムにPerlがビルドされていなかったり、
他のライブラリファイルと一緒にこれらのモジュールをインストールする権限がない
場合は、適当な場所にモジュールを置いてスクリプトに次のように付け加えれば
ちゃんと使用することができます。:
BEGIN {
unshift (@INC, "/your/dir/favorite/place");
}
さて、ここからがCGI::* モジュールを使った例です。:
#!/usr/local/bin/perl5
use CGI::Form;
$cgi_form = new CGI::Form;
print <<'End_of_Header'; #End_of_Headerまでを出力
<HTML>
<HEAD><TITLE>Watch This!</TITLE></HEAD>
<BODY>
<H1>Watch This!</H1>
End_of_Header
print $form->startform;
## テキストフィールドを生成
print "Name: ";
print $form->textfield('name'), "<BR>\n";
## ラジオボタングループを生成
print "<P>Where do you live: <BR>";
print $form->radio_group (-name => 'where',
-values => ['North America',
'South America',
'Europe',
'Australia',
'Asia',
'Antartica'],
-default => 'North America',
-linebreak => 'true');
## テキストエリアフィールドを生成
print "Comments: ";
print $form->textarea('comments', undef, 5, 40);
print "<P>";
print $form->reset;
print $form->defaults;
print $form->submit ('Send!', 'Submit');
print $form->endform;
print "</BODY></HTML>";
reset, defaults と submit メソッドは 異なったタイプのボタンを生成します。 リセットボタンは現在のフォーム上の値をクリアし以前の状態(あるいは セッション)の値を表示してくれます。 デフォルトボタンはフォームを全体的にクリアします。そしてサブミット メソッドはあなたがサーバにデータを送るためのサブミットボタンを 生成します。
さて、簡単ではありませんでしたか?
This document, and all its parts, are Copyright (c) 1996, Shishir Gundavaram and Tom Christiansen. All rights reservered. Permisson to distribute this collection, in part or full, via electronic means (emailed, posted or archived) or printed copy are granted providing that no charges are involved, reasonable attempt is made to use the most current version, and all credits and copyright notices are retained. Requests for other distribution rights, including incorporation in commercial products, such as books, magazine articles, or CD-ROMs should be made to either of the authors.
ご意見、ご要望は、
電子メールまたは
投稿にお願い致します。ホームページへ戻る。