Translate

2008年8月12日火曜日

Data::Dumperモジュール

リファレンスなどを含んでたり、構造が深くなっていくと
パットそれがどんな構造なのかわからなかったり、
あるモジュールの返す値ってどんな構造なんだ??
というときがあります。
そういう時に便利よいのがData::Dumperモジュールだそうです。
というわけで、使ってみる。

use strict;
use warnings;
use Data::Dumper;

my @array = ([qw(a b c)], [qw(d e f)], [qw(g h i)]);
print Dumper \@array; #リファレンスを渡す

実行結果
$VAR1 = [
[
'a',
'b',
'c',
],
[
'd',
'e',
'f',
],
[
'g',
'h',
'i',
],
];
わかりよいですねぇー。
他にも試してみますよー。
use strict;
use warnings;
use Data::Dumper;

my %hash;
$hash{a}{b} = "ab";
$hash{a}{c} = "ac";
$hash{b}{a} = "ba";
$hash{b}{c} = "bc";
$hash{c}{a} = "ca";
$hash{c}{b} = "cb";
print Dumper \%hash; #リファレンスを渡す
実行してみると…

$VAR1 = {
'c' => {
'a' => 'ca',
'b' => 'cb'
},
'a' => {
'c' => 'ac',
'b' => 'ab'
},
'b' => {
'c' => 'bc',
'a' => 'ba'
}
};
ちなみに、Data::Dumperにはオプションがあります。
Indent...インデントを変更。下記値を指定するとOK。
0→インデントなし
1→固定幅
2→自動可変(ディフォルト)

Terse...変数名の表示/省略
0→変数名を省略しない(ディフォルト)
1→可能であれば省略

Sortkeys...項目のソート
0→キーをソートしない(ディフォルト)
1→キーをソートする


例えば、インデント固定幅(1) 変数名なし(0)でキーでソートする(1)ように指定すると…
use strict;
use warnings;
use Data::Dumper;

my %hash;
$hash{a}{b} = "ab";
$hash{a}{c} = "ac";
$hash{b}{a} = "ba";
$hash{b}{c} = "bc";
$hash{c}{a} = "ca";
$hash{c}{b} = "cb";
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Sortkeys = 1;
print Dumper \%hash; #リファ(ry
実行結果
{
'a' => {
'b' => 'ab',
'c' => 'ac'
},
'b' => {
'a' => 'ba',
'c' => 'bc'
},
'c' => {
'a' => 'ca',
'b' => 'cb'
}
}

Date::Dumperの和訳みっけましたので、メモ書きしときます。
Data::Dumper - perlデータ構造の出力/eval両用文字列化

関連→Dumpvalueモジュール

0 件のコメント: