プログラム設定

メールフォームCGI本体の設定内容を、外部ファイルから読み込み処理させていきます。

このやり方であれば、設定内容を変更したいときなどは、外部ファイルのみ変更すればよいだけですからね。

  1. サンプル
  2. ダウンロード
  3. 解説

サンプル

サンプルプログラムでは、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ループで連想配列の内容をすべて表示させています。

<戻る>