Text::ASCIITableによるアスキーテーブルレイアウト
MySQLの出力結果みたいなのが必要になったのでCPAN漁ってたらこんなの発見。
Text::ASCIITable - Create a nice formatted table using ASCII characters. - metacpan.org
地味に凄いめちゃ便利
use Text::ASCIITable; my @rows = ( [1,'foo','2011-03-16 11:22:33'], [2,'hogehogehoge','2011-03-17 11:22:33'], [3,'uwaaaaa','2011-03-18 11:22:33'], [4,'dio','2011-03-19 11:22:33'], [5,'jojo','2011-03-20 11:22:33'], ); my $t = Text::ASCIITable->new(); $t->setCols('id','name','created'); $t->addRow($_) for @rows; print $t;
$ perl asciitable.pl .-----------------------------------------. | id | name | created | +----+--------------+---------------------+ | 1 | foo | 2011-03-16 11:22:33 | | 2 | hogehogehoge | 2011-03-17 11:22:33 | | 3 | uwaaaaa | 2011-03-18 11:22:33 | | 4 | dio | 2011-03-19 11:22:33 | | 5 | jojo | 2011-03-20 11:22:33 | '----+--------------+---------------------'
いいですねー。
あとサクサクっとハッシュ配列構造のデータを出力する場合はこんなかんじか
use Text::ASCIITable; my @rows = ( {'id' => 1,'name' => 'foo', 'created' => '2011-03-16 11:22:33'}, {'id' => 2,'name' => 'hogehogehoge','created' => '2011-03-17 11:22:33'}, {'id' => 3,'name' => 'uwaaaaa','created' => '2011-03-18 11:22:33'}, {'id' => 4,'name' => 'dio','created' => '2011-03-19 11:22:33'}, {'id' => 5,'name' => 'jojo','created' => '2011-03-20 11:22:33'}, ); if ( @rows ) { my @keys = keys %{$rows[0]}; my $t = Text::ASCIITable->new(); $t->setCols(@keys); $t->addRow(@$_{@keys}) for @rows; print $t; }
いいですねー。
他にもオプション等で色々指定できるみたいですが、とりあえずこれだけできりゃもうおkですね。