Devel-Comments はPerl用モジュールです。コメントに対して少しルールを追加して記述することで、そのコメントをデバッグ用メッセージとして出力することができるようになります。Perlの文法には影響しません。デバッグ用のコードを追加することで起こる問題や、開発者のストレスを少しでも減らすことができるでしょう。

主な特徴

1) コメント行をそのままデバッグ用のメッセージとして出力

Perlのコメント行は、1つの#ではじまります。このモジュールでは、# を3つ以上指定することでデバッグ用のメッセージとして扱うことができます。#の数がレベルを示します。

スカラー変数、配列、リテラルを出力する場合は次のように記述します。

use strict;
use Devel::Comments;

my $scalar = 42;
### $scalar

$scalar = 'abc';
### $scalar

my @array = ('a','b','c','d');
### @array

### リテラルです。

実行結果は次のとおりです。

### $scalar: 42

### $scalar: 'abc'

### @array: [
###           'a',
###           'b',
###           'c',
###           'd'
###         ]

### リテラルです。

進捗状況を示すプログレスバーもあります。コーディング例と実行結果は次のとおりです。

# Progress bars...
for my $i (0..1e6) {   ### Working===[%]     done
	...
}

Working[4%]                    done

をコメントに使用することで、現在の日時を出力することができます。

### Now <now>

### Now Fri Aug  6 07:50:51 2010

をコメントに使用することで、ソースコードの位置を出力することができます。

### Here <here>

### Here "util/demo.pl", line 71

2) デバッグのレベルを定義

# の数を指定してレベルを定義します。次の例は、レベル3とレベル5を出力する定義となります。

use Devel::Comments '###', '#####';

use Devel::Comments ({-level => [3, 5]});

3) 出力先を指定

既定値では標準エラー出力 STDERR が出力先になります。次の例では、標準出力やファイルへの出力を示す定義となります。

use Devel::Comments *STDOUT;    # prints to STDOUT instead
use Devel::Comments \*FH;       # prints to some FH
use Devel::Comments $fh;        # prints to some $fh

use Devel::Comments ({          # hashref calling syntax
    -file => 'my.log',          # opens my.log and prints to it
});

Devel-Comments のインストール

sudo cpanm Devel::Comments でインストールできます。

コメントを書くことについては、様々な考え方があります。コードを書いた後、コメントを書く方法もありますが、コメントを先に書いてアルゴリズムを確認した上でコードを書く方法もあります。後者は開発規模の大小に関わらず、効果があるでしょう。コメントを先に書くことで設計通りのアルゴリズムとなっているか、思考通りとなっているかを確認できます。運が良ければ矛盾を見つけることができます。待ち受けるテストでの苦労が少しでも減るのではないでしょうか。

Devel-CommentsはPerl製、GPL/Artistic Licenseのオープンソース・ソフトウェアです。

Devel::Comments - Debug with executable smart comments to logs

source code