PDIC Toolkit Tutorial - Step 3 で例として挙げた verb.pl を、詳しく説明します。
package は「名前空間」を宣言します。プログラム本体とフィルターの間で変数やサブルーチンの名前が衝突しないようにするための仕組みです。PDIC Toolkit のフィルターを書く場合は、名前空間として常に MY::Filter を使用します。
行の最後のセミコロン(";")は「文の終わり」を示す記号です。
文字列を Unicode (UTF-8) として処理するという宣言です。
sub はサブルーチンの開始を示す宣言です。filter がサブルーチン名です。中括弧のペア({ })で囲まれた内側がサブルーチンの本体です。
極めて重要な1行です。my はローカル変数を宣言します。つまり、次の変数 $entry がサブルーチン filter の内部だけで有効であることを示します。
$entry のように "$" で始まる変数は文字列または数値または参照です。Perl では文字列と数値と参照をまとめてスカラーと呼びます。
shift は様々な働きをする関数(function)ですが、ここではサブルーチン filter に与えられた1番目の引数(argument)を返しています。
Perl の条件文は次のような構文を持ちます。
if (A) { B } else { C }
A は条件式で、条件が満たされた場合はブロック B の文が実行され、満たされなかった場合はブロック C の文が実行されます。
$entry->{example} という書き方から、変数 $entry が連想配列(別名、ハッシュ)への参照であることがわかります。普通の配列が 0 から始まる連続する整数によりインデックスされるのに対し、連想配列は任意の文字列によりインデックスされます。$entry->{example} は $entry が参照する連想配列に格納された値のうち、インデックス "example" に対応する値を返します。
Step 3 でも説明しましたが =~ は左の文字列と右の正規表現を結びつけてマッチングを行う演算子です。
Perl ライブラリ(他の Perl スクリプトにより読み込まれる Perl スクリプト)は、最後に True 値を返さなければなりません。そこで、ほとんどの Perl ライブラリは最後の行が 1; で終わっています。
黒田努 <tkrd@mail.com> (2002.02.25)