Text::ASCIITableで整形表示

ASCII ART風の「表」の形式を作成するモジュール。

setColsで列のタイトルを設定してaddRowで行のデータを追加して行き、drawメソッドで表形式の文字列を取得する。

use Encode;
use utf8;

use Text::ASCIITable;

my $tbl = new Text::ASCIITable();

$tbl->setCols('Name','Age','Address');

$tbl->addRow('Kaneko',50,'Chiba');
$tbl->addRow('John',33,'Hyogo');
$tbl->addRow(encode('euc-jp', 'タロウ'),22,'Hokkaido');

print $tbl->draw;

数値の列は右寄せしてくれる。日本語の出力は、端末の文字コードにencodeしてあげる必要がある。

以下のスクリプトではいくつかオプションを指定している。

newのalignHeadRow => 'center' 列のタイトルをセンタリング
newのdrawRowLine => 1 1行毎に区切りの線を表示する
setColWidth NameとAddress列の幅を「10文字分」と指定している
use Text::ASCIITable;

my $tbl = new Text::ASCIITable({
    alignHeadRow => 'center',
    drawRowLine => 1
});

$tbl->setCols('Name','Age','Address');

$tbl->setColWidth('Name', 10, 1);
$tbl->setColWidth('Address', 10, 1);

$tbl->addRow('Kaneko',50,'Chiba');
$tbl->addRow('John',33,'Hyogo');
$tbl->addRow('Taro',22,'Hokkaido');

print $tbl->draw;

サーバのログを調べた結果を表示するときに使うといいかも。あとは、アプリケーションの「printデバッグ」とか。