Perl のスクリプトは宣言と実行文の列で構成されます。
Perl で
宣言の必要があるのは、レポートフォーマットとサブルーティンだ
けです。
これらの宣言については、後ほど詳しく述べます。
ユ
ーザが造った初期化していないすべてのオブジェクトは、代入など
の明示的な操作で定義されない限り、ヌルもしくは 0 の値を持っ
ているとものとして扱われます。
(しかし、未定義の値を使った
場合に警告を出すようにすることもできます。)
sed や awk のス
クリプトでは、実行文の列は入力行ごとに繰り返して実行されます
が、Perl では、実行文の列は 1 度実行されるだけです。
これは、
入力ファイルに対して明示的に自分でループを行なわなければなら
ないことを意味していますが、どのファイルのどの行に注目するか
を自由に制御できることも意味しています。
(本当は、私はウソ
を付いています。
-n か -p スイッチを使えば、暗黙にループを
行なうことができます。
sed や awk のように必須のデフォルト
になっていないだけのことです。)
Perl は、ほとんどすべての部分で、自由形式の言語です。
(理由
は自明であると思われますが、フォーマット宣言が唯一の例外とな
っています。)
コメントは、文字 "#" によって示され、行末まで
となります。
C のスタイルの /* */ を使おうとした場合には、
文脈によって、割り算かパターンマッチかのいずれかに解釈され、
C++ の // コメントは、空の正規表現に見えます。
使わないよう
にしましょう。
宣言は実行文が置けるところであれば、どこにでも置けますが、実
行文の列を実行するのに影響を与えません。
宣言はコンパイル時
にのみ意味を持ちます。
普通は、すべての宣言をスクリプトの最
初か、最後にまとめておきます。
Perl 5 から、サブルーティンを宣言することで、宣言した場所以
降では、サブルーティン名をリスト演算子のようにして使うことが
できるようになりました。
サブルーティンは以下のように、定義
しないで宣言することができます:
sub myname;
$me = myname $0 or die "can't get myname";
リスト演算子として働きはしますが、単項演算子ではありませんの
で、|| ではなく or を使うことに注意してください。
サブルーティンの宣言は、use 文を使ってインポートすることもで
きます。
Perl 5 からはまた、実行文の列に字句スコープの変数宣言を、含
めることができるようになりましたが、変数名を宣言することを除
けば、宣言文は通常の実行文と同様に働き、通常の実行文であるか
のように他の文の中に埋め込まれるのです。