プログラム設定
メールフォームCGI本体の設定内容を、外部ファイルから読み込み処理させていきます。
このやり方であれば、設定内容を変更したいときなどは、外部ファイルのみ変更すればよいだけですからね。
サンプル
サンプルプログラムでは、2種類の設定ファイルを読み込み表示させています。
プログラム設計では5種類の設定ファイルを用意することになっていましたよね。
今回はその中の2種類…。
Sendmailパスや管理者メールアドレスなどを指定したファイルと、各種エラーメッセージを指定したファイルです。
これら設定項目は、パラメータの取得のときと同様にリファレンス形式の連想配列に格納し、必要に応じてピンポイントで呼び出し使用していくことにします。
<戻る>
ダウンロード
サンプルプログラムをダウンロードするにはここをクリックします。
ZIP形式で圧縮されているので解凍作業が必要です。
改行コードはWindows形式で、文字コードはShift_Jisです。
解説
ここでは、2種類の設定ファイルを読み込みまとめて表示させています。
設定ファイル
設定ファイルを作成する上で、まずはそのフォーマット(書き方)を決めておく必要がありますよね。
いろいろな書き方があって、べつにこうしなければいけないというものはありませんが…。
今回作成するメールフォームCGIでは、各設定内容を連想配列に格納して処理させることにします。
なので、「キー=値」という形式で設定内容を記述していくことにします。
さらに、何を設定したものかを後から見てもわかるように、行頭に「#」を書けば、自由にコメントを書けるようにします。
具体的にどんな書き方で何を設定したかについては、「config.txt」と「message.txt」を見てください。
読み込み
設定ファイルを読み込んでいるのは、「script.pl」内のreadsetting関数です。
「my $config = &script::readsetting('./files/config.txt')」で、「config.txt」の設定内容を読み込み。
「my $message = &script::readsetting('./files/message.txt')」で、「message.txt」の内容を読み込みます。
readsetting関数
readsetting関数は、引数に与えられたパス上の設定ファイルを開き、前述のフォーマットにしたがって連想配列に格納していきます。
大まかな流れとしては、指定されたファイルを開いて、行中に「=」があれば、その左辺をキーに右辺を値にして、順次連想配列に格納していきます。
そのまえに、行頭に「#」があればスキップするとか、改行コードを統一させるなどの処理が入っていますが、改めて説明しなくてもわかると思うので無視しています。
連想配列の作成
連想配列のキーと値を読み取っているのは以下の部分です。
if (/^([^\=]+)\=([^\n]+)$/) {
my $key = $1;
my $value = $2;
…
$data{$key} = $value;
}
if文では、行頭から「=」の前までをひとくくりにし、特殊変数「$1」に代入させています。
同様に、「=」の次から改行コード「\n」の前までをひとくくりにし、今度は特殊変数「$2」に代入させています。
「…」部分では、実際に見ていただけるとわかるように、文字列頭や末尾にある無駄な空白を取り除いたり、キーに何も指定されていなければスキップさせたりしています。
そうして最後に、「$1」が連想配列のキーとして、「$2」が値として、連想配列が作成されていきます。
戻り値
戻り値は、作成しました連想配列のリファレンスです。
「return \%data;」というのがそうですね。
メイン処理
メイン処理では、入力データの表示と同じように、whileループで連想配列の内容をすべて表示させています。
<戻る>