Perl/CGI 職人気質

 2004/07/29、おかげさまで、本サイト管理人 futomi が執筆した Perl 本が出版されました!!

 futomi が本サイトを運営し、各種 CGI を作り上げてきたノウハウを惜しみなく注ぎ込みました。ホスティングサービスでは、さまざまな制約があり、時にはライブラリーやモジュールが無くて動作しないことも。。。しかし、本書では、ホスティングサーバでも確実に動作できるようにするためのテクニックを重点的に解説しています。

 今まで、本やネットから仕入れた知識で CGI を作ってはみたものの、自分のホスティングサーバでは動かなかったなんて方や、自分も CGI プログラマーになろう!って方には、是非オススメです。また、簡単に本書のノウハウが使えるよう、殆どの解説ではサブルーチン化しております。中身を理解しなくても、極力、すぐに使えるように工夫しました。机の上に並んでいる書籍の一つに加えて頂けると幸いです。

書籍名 Perl/CGI 職人気質(かたぎ)
著者 羽田野 太巳
ページ数 366 頁
出版社 ソフトバンククリエイティブ株式会社
ISBNコード ISBN 4-7973-2475-9

目次

序章 基本知識の確認

CGI 動作権限とパーミッション
Perl のパス
FTP 転送モード
コラム 粋な Perl 作法 (1)

第壱章 すべての基本はフォームにあり

壱ノ壱 フォームについて
概要
URL エンコードとデコードについて
壱ノ弐 サーバでデータを受け取るポイント
概要
送信メソッドを区別する
GETで送信されたデータを受け取るには?
POSTで送信されたデータを受け取るには?
壱ノ参 CGI モジュールでデータを安全に受け取る
概要
CGI モジュールを利用するための準備
フォームデータを変数に格納する
複数選択フォームデータを配列に格納する
コラム:粋なPerl作法 (2)

第弐章 文字列操作をとことん極める

弐ノ壱 文字コードを理解する
はじめに
Jcode.pm をサーバに設置する
Jcode.pm で文字コード変換
コラム:粋なPerl作法 (3)
弐ノ弐 不正文字列を賢くチェックする
概要
半角数字だけを許可する
半角アルファベットだけを許可する
ASCII 文字だけを許可する
全角英数字だけを許可する
ひらがなだけを許可する
全角カタカナだけを許可する
郵便番号形式チェック
電話番号形式チェック
メールアドレスチェック
弐の参 さまざまな文字コードを変換するワザ
全角カナから半角カナへ
半角カナから全角カナへ
英数字の全角/半角変換
大文字・小文字の変換
数字にカンマを挿入する
弐ノ四 1文字ずつに分割する
日本語文字を1文字ずつ分割する
CSV形式から要素を取り出す

第参章 CGIメールの礼儀作法

参ノ壱 メール送信の基本を極める
メールヘッダー概要
メールを送信する
エラーメールを受信する
参ノ弐 正しい作法で日本語メールを送る
概要
日本語のメール本文を送る
Base64 エンコード
日本語サブジェクトを使う
日本語の差出人を使う
参ノ参 添付ファイルの送り方
概要
マルチパートを理解する
メディアタイプを理解する
添付ファイルを送信する
コラム:Perlが計算間違い? ~小数の計算は要注意(1)~

第四章 ネットワークプログラミング

四ノ壱 HTTP
はじめに
HTTP概要
LWPモジュールを使う
LWPでHTMLを取得する
LWPでレスポンスヘッダーを取得する
ベーシック認証が設定されているページを取得する
LWPモジュールが使えないサーバでのHTTP通信
レスポンスヘッダーを取得する
活用事例 ~ URLの存在チェック ~
四ノ弐 POP3
はじめに
Mail::POP3Client モジュールを設置しよう
POP3Client モジュールの使い方
ヘッダーの分解

第五章 XMLの扱い方

五ノ壱 XMLの概要
XMLとは
PerlでXMLを扱う
五ノ弐 Amazon Web サービス
Amazon Web サービスの概要
Amazon Web サービスの準備
商品を検索してみよう
活用事例 ~ 自分のサイトに新刊情報をリアルタイム表示 ~

第六章 ホスティングサーバ・ハック

六ノ壱 サーバ情報をハックする
カレントディレクトリのフルパスを調べる
サーバのマシン情報、OS、バージョンを調べる
CGI の実行権限を調べる
コマンドパスを調べる
六ノ弐 Perl情報を取得する
Perlのバージョンを調べる
利用可能なPerlモジュールを調べる
利用可能なPerlモジュールのバージョンを調べる
コラム:Perlが計算間違い?~小数の計算は要注意 (2)~

第七章 環境非依存、最強CGIの作り方

七ノ壱 サーバ環境に依存する問題解決テクニック
文字化けを回避する
モジュールのロードエラーをトラップする
間違っているとえらい目に遭う、Perlモジュールのサーチパス
OS間での改行コードの相違を見落としていないか?
七ノ弐 オーバーロードを回避する ~メモリー節約テクニック~
あなどるなかれ、サーバ環境でのメモリー
漫然とファイルを読み込んでいないか?
使わなくなった変数は処置する ~ undefで破棄 ~
リファレンスを活用してメモリー節約
七ノ参 パフォーマンス向上テクニック ~ 保守性と処理時間のバランスを考慮 ~
配列内にキーが存在するかを素早く調べる
効率的なループ処理のテクニック
文字列フィールドの取り出しテクニック
はたしてパフォーマンスは上がったか? ~ ベンチマークの方法 ~
コラム:データの区切り文字にはなにがよい?

第八章:ホスティングサーバで行うアクセス解析

八ノ壱 どこまでわかるか?訪問者プロファイルの解析
はじめに
環境変数
REMOTE_HOSTが使えないサーバでホスト名を取得する
OSを解析する
Webブラウザを特定する
Webブラウザの指定言語を取得する
リンク元URLを取得する
八ノ弐 アクセス解析プログラムの活用 ~ ログから覗くビジターの素顔 ~
概要
Apacheログフォーマット
ログ生成CGIの作成
ログをビジュアルに表示するには? ~ ツールの活用 ~

第九章 その他の重要な技法

九ノ壱 変数の局所化
概要 ~ my と local を上手に使い分ける ~
my
local
九ノ弐 タイムアウト処理
概要
実装方法
九ノ参 日付・時間の処理
月末日を算出する
存在する日付かどうかをチェックする
休日かどうかをチェックする
誕生日から現在の年齢を算出する
コラム:ファイルテスト演算子の活用 (1)

第拾章 堅牢なセキュリティを確保する

拾ノ壱 入力値のチェックを厳密に
はじめに
JavaScriptに頼らない
OSコマンドの実行に注意
open関数に御用心
タグを無効にする(サニタイジング)
拾ノ弐 ホスティングサーバでのセキュリティ対策
アクセス制限は大丈夫?
.htaccess によるアクセス制限
拾ノ参 パスワードの保護
概要
crypt 関数による暗号化と照合を使いこなす

付録

付録ノ壱 Windows XP に Active Perl をインストール
付録ノ弐 Windows XP に Apache を導入・設定
付録ノ参 Red Hat Linux 系での CGI 動作環境