TOP 投稿 過去ログ 管理用 RSS RDF

【Perl5.8以降】現代的なPerlの記述方法

URL:http://d.hatena.ne.jp/perlcodesample/20091120/1246679588
リンク先のページでPerl5.8以降における標準的なPerlの書き方が解説されています。
Web上で配布されている掲示板はPerl4の頃に作成されたものが多いのですが、そろそろ新しいPerlで実装するべきなのかも。

現代的なPerlの記述方法一覧 + α - Perl入門〜サンプルコードによるPerl入門〜
・【必須】strictプラグマとwarningsプラグマを有効にする
・【必須】ファイルハンドルにはレキシカル変数を使う
・【必須】3引数のopen関数を使う
・【必須】ファイルオープン時のエラー処理を行う
・[推奨]レキシカル変数とサブルーチンの名前には小文字とアンダーバーを使用する
・[推奨]パッケージ変数には大文字とアンダーバーを使用する
・【必須】パッケージ変数は使わずにレキシカル変数を使う
・[推奨]標準的なコードのフォーマットで書く
・[推奨]日本語などのマルチバイト文字を適切に扱うためにEncodeモジュールを使用する
・[推奨]デフォルト変数 $_ は使用しない
・[推奨]foreach文ではレキシカル変数を宣言する
・(参考)日付処理の標準モジュールを使用する
・【必須】不必要なモジュールの読み込みは行わない
・[推奨]コメントの#の嵐は避ける
・[推奨]モジュールの関数をインポートするときは明示する
・【必須】gotoは使用しない
・[推奨]do 〜 whileは使用しない
・[推奨]redoは使用しない
・[推奨]プロトタイプは使用しない


strictプラグマとwarningsプラグマ
ソースの先頭に「use strict」「use warnings」を書くと、Perlの文法チェックを厳しくするようになります。
※warningsプラグマはPerl5.6から標準モジュールに加わります。

レキシカル変数
レキシカル変数は「my」を使って宣言した変数です。
レキシカル変数を使うと他のサブルーチンに同じ名前の変数があっても区別されるため、値が操作されて思わぬ結果になることを防ぐことが可能です。さらにブロック内で宣言した場合も、そのブロック内でしか使えないため、ループや作業用の変数として使いやすくなっています。

gotoは使用しない
gotoを使用しなくても、ループを制御するなら「last」「next」が使えます。
エラー処理はdieを使うことで例外処理が可能です。