Data::Dumper::Dumper()
メソッドを使用しています。出力は良いですが、少しコンパクトにできて見栄えが良くなります。
どうすればそれを制御できますか?より良い代替手段は何ですか?
Data::Dumper::Dumper()
メソッドを使用しています。出力は良いですが、少しコンパクトにできて見栄えが良くなります。
どうすればそれを制御できますか?より良い代替手段は何ですか?
Data :: Dumpに似たものがないか、 Data :: Dumpを見てください。ただし、かなりの印刷が得意です。
編集(20120304):私はこの質問を完全に忘れていましたが、今日それは賛成され、それは私の記憶を揺さぶった。今日(3年後)Perlできれいに印刷するために何かをお勧めしなければならない場合、私は確かにData::Printerを使用します。Data :: Printer自身の理論的根拠から:
Data :: Dumperは素晴らしいツールであり、データ構造を元に
eval
戻すのに適した方法で文字列化することを目的としています。重要なのは、多くの人がそれ(およびData :: Dumpなどの同様のもの)を使用して、検査とデバッグのためにデータ構造とオブジェクトを画面に印刷することです。これらのモジュールを使用することはできますが、それは意味がありません。する必要があることを意味します。
これがData::Printerの出番です。これは、1つのことと1つのことだけを行うことを目的としてい ます。Perl変数とオブジェクトを適切にフォーマットされて(人間が検査できるように)画面に表示します。
(表示用ではなく) ストレージ用に出力をシリアライズしたい場合は、 Storableとfreeze()
を見てくださいthaw()
。DB またはキャッシュにデータ構造を保存するために Data::Dumper が使用されているのを見るたびに、私はうんざりします。:(
私は通常 Data::Dump::Streamer を使用しますが、他の人が言ったように、Data::Dumper のオプションが十分でない場合にのみ使用します。
Data::Dumperの 1 つの代替*は、JSONとその Perl 実装JSONです。
※良いかどうかはあなた次第です。
1つのオプションは、Data :: Dumper :: Perltidyを使用することです。これは(多かれ少なかれ)Data :: Dumper :: Dumper()のドロップイン置換ですが、Perltidyを使用して出力をフォーマットします。
ダンプ出力だけを探している場合: Smart::Comments
.
あなただけuse
です。
use Smart::Commments;
次に、単純な変数を次のように 3 つのハッシュ コメントに入れます。
my $v = black_box_process();
### $v
そして、可能な限り最も美しい印刷でそれをダンプします。
次のように、より複雑な式を管理することもできます。
### ( $a && ( $b ^ ( $c || $d ))) : ( $a && ( $b ^ ( $c || $d )))
ただし、「コロンパス」に注意する必要があります。
### $My::Package::variable
また
### %マイ::パッケージ::
私の経験では働いたことはありません。それらを機能させたい場合は、次のようなものが必要です。
my %stash = %My::Package::;
### %stash
また、ドキュメンテーションを読めばわかるように、他にもたくさんのかわいいトリックを実行します。
Data::Dumper::Conciseも別の可能性です。
use Data::Dumper::Concise;
warn Dumper($var);
次と同等です。
use Data::Dumper;
{
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Useqq = 1;
local $Data::Dumper::Deparse = 1;
local $Data::Dumper::Quotekeys = 0;
local $Data::Dumper::Sortkeys = 1;
warn Dumper($var);
}