1.02.2012

Refactoring punctuation variables in Perl

Perl: 句読点変数のリファクタリング

Perl には $!  $?  $@  $|  $"  $,  などのいわゆる句読点変数が多く定義されている。
これがコードの視認性の悪さにつながっているのは疑いの余地もない。

English モジュールを利用することで、以下のような名前付きの変数を使えるようになる。

・名前付き変数の例

組み込みグローバル変数 名前付き変数(English モジュール) 概要
$! $OS_ERROR    $ERRNO エラー番号またはエラーメッセージ
$? $CHILD_ERROR 最後に実行されたコマンドのステータス
$@ $EVAL_ERROR 直前の eval コマンドのエラーメッセージ
$| $OUTPUT_AUTOFLUSH 出力の自動フラッシュ
$" $LIST_SEPARATOR リストセパレータ
$, $OUTPUT_FIELD_SEPARATOR    $OFS 出力フィールドセパレータ

ただし、『Perl ベストプラクティス』 (O'REILLY) によれば、English モジュールの使い方は以下のようにすべしとある。

use English qw( -no_match_vars );

これは、マッチ変数を定義することによる弊害(正規表現の性能劣化)を防ぐためである。

参考:
『Perl ベストプラクティス』 (O'REILLY)
http://www.tutorialspoint.com/perl/perl_special_variables.htm

0 件のコメント:

コメントを投稿