アクセスカウンタや掲示板作るのにperlを覚えた人は僕も含めて多いと思います。しかし、perlは掲示板だけでなく他にも色々面白いことが出来ます。
ここではlibwwwを使ったプログラミングについて解説します。libwwwを使うとOsakanizerやor-ne chekerのようなCGIが作れます。(^^)v
libwwwをインストールするには、C言語が使えることが必須です。あなたのサーバの管理者にC言語が使えることを確認して下さい。
C言語が使えない時は、babyAさんのhtalkを使うといいんじゃないでしょーか。
まず、libwww-perlをインストールします。
libwww-perl-0.40.tar.gzを適当なディレクトリ(例えば/‾foo/libwww/)に展開します。
sysサブディレクトリを作成します。
mkdir /‾foo/libwww/sys/
sys_socket_ph.cをコンパイルします。
cc sys_socket_ph.c -osys_socket_ph
sys_socket_phの出力をsysに置きます。
sys_socket_ph > /‾foo/libwww/sys/socket.ph
これで、libwwwが使えるようになっているはずです。
libwwwに含まれているgetで動作確認が出来ます。
サンプルとして、フォームで指定したページをhttpで取得して表示するCGIを挙げます。
ソース: get.txt (get.cgiにリネームして使って下さい)
URL指定用フォーム: get.htm
では、順番に解説していきましょーか。随時ソースを参照して下さい。
7-8行
libwwwとlibwwwを呼び出すCGIを別のディレクトリに置く場合、コメントを外します。
libwwwを使うCGIが複数ある場合などに設定するといいでしょう。
10-12行
libwwwを使うためにライブラリをインクルードしています。
18行
サーバーがFIREWALLの中にあるなど、プロキシを使う必要がある場合にコメントを外して下さい。
プロキシの設定の仕方などはあなたのサーバの管理者にお尋ね下さい。
20行
メソッドを指定します。HEAD等も使えると思いますが、確認してません。(汗)
22行
User-Agent名を設定します。CGIの対象になった人に分かるようにCGIのURLを埋め込んでいます。
34-49行
フォームから渡されたクエリーの解析をしています。
51-54行
URLが有効なものかどうか判定しています。
「空」「http://のみ」「http://で始まっていない」のうちのどれか場合、フォームに戻ります。
56行
相対パス等を指定した場合、絶対パスに直します。
このCGIでは不必要かと思いますが、libwwwはfile://とかにも対応してるんで...。
58-72行
リクエストヘッダを設定します。ここでは、Referer,Forwarded,Hostを設定しています。
Referer,Forwardedは設定しなくてもいいんだけど、匿名プロクシがわりに使われるのを予防ってことで。
Hostはバーチャルホスト機能を持ったサーバにアクセスするために設定する必要があります。
74行
httpリクエストを発行して実際にファイルを取得します。
メソッド、URL、リクエストヘッダ、タイムアウト秒数を設定し、ステータスコードと実体を得ます。
実体は$contentに入ります。
76-82行
正常に取得できた場合(ステータス=200)は本来の処理を、エラーの場合にはエラー処理をします。
今回は両方とも同じ処理してます。(^^;)
libwwwを使って何をするかはあなた次第です。Osakanizerの別バージョン作るもよし、全く別のもの作るもよし。
HTML-lintみたいなチェッカーや懐かしのバーコードバトラーみたいなWebバトラー、頑張ればサーチエンジンも作れるかも?
まだまだ他にも応用が効くと思います。お互い頑張りましょう!(^^)