一見,BEGIN { } を使わずとも同じ処理ができるように思えるかもしれないが,次のようなやり方には問題がある。
% perl -ne '$/ = undef; print if (/\bRussia/i);' voa/*
BEGIN を使わずに処理した場合,新規に指定した区切り文字が適用されるのは,2番目のレコードを読み込む時になってからである。-n により最初のレコードを読み込む時にはデフォルトの区切り文字が有効で,最初のレコードは行となる。
第1レコード: 最初のファイルの第1行 第2レコード: 最初のファイルの2行目からファイル末まで 第3レコード: 2番目のファイル 第4レコード: 3番目のファイル :
結果だけを見ていると,正しく処理されているように見える場合が多く,間違いに気付きにくいので気を付けること。