PHPのprint_rは非常に便利ですが、Perlにリモートで同等のものがあるかどうか疑問に思いますか?
@tchristは Data :: Dump over Data :: Dumper を推奨していることに注意してください。私はそれを知りませんでしたが、見た目からすると、はるかに使いやすく、見栄えが良く、結果を解釈しやすいようです。
上記のリンクに示されている例のスニペット。
use Data::Dumper;
package Foo;
sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};
package Fuz; # a weird REF-REF-SCALAR object
sub new {bless \($_ = \ 'fu\'z'), $_[0]};
package main;
$foo = Foo->new;
$fuz = Fuz->new;
$boo = [ 1, [], "abcd", \*foo,
{1 => 'a', 023 => 'b', 0x45 => 'c'},
\\"p\q\'r", $foo, $fuz];
########
# simple usage
########
$bar = eval(Dumper($boo));
print($@) if $@;
print Dumper($boo), Dumper($bar); # pretty print (no array indices)
$Data::Dumper::Terse = 1; # don't output names where feasible
$Data::Dumper::Indent = 0; # turn off all pretty print
print Dumper($boo), "\n";
$Data::Dumper::Indent = 1; # mild pretty print
print Dumper($boo);
$Data::Dumper::Indent = 3; # pretty print with array indices
print Dumper($boo);
$Data::Dumper::Useqq = 1; # print strings in double quotes
print Dumper($boo);
通常のPerlと同様に、由緒あるData :: Dumper:に代わるソリューションをお勧めします。
そしてもちろん、デバッガーでは、「x」コマンドを使用して任意の変数を表示できます。私は特に「x 2 $complex_structure
」という形式が好きです。ここで、2(または任意の数)は、2レベルのネストされたデータのみを表示するようにデバッガーに指示します。
Data :: Dumper の代わりに、有効なPerlコードを生成せず、代わりに、よりスキミング可能な形式(のx
コマンドと同じ) Perlデバッガー)は Dumpvalue です。また、消費するメモリも大幅に少なくなります。
同様に、 Data :: Dump :: Streamer があり、これは よりもさまざまなエッジおよびコーナーの場合でより正確です。 )Data :: Dumper はです。
Data :: Dump を使用します。出力はData :: Dumper($ VAR1なし)よりも少しクリーンで、クイックショートカットを提供し、DTRTも試行します。つまり、呼び出されるとSTDERRに出力されます。 voidコンテキストで、そうでない場合はダンプ文字列を返します。
私は同じものを探しに行って、 この素敵な小さなPerl関数 を見つけました。これは明示的にprint_r()のような結果を生成することを意図しています。
スクリプトの作成者は、フォーラムで正確な質問をしていました ここ 。
print objectToString($json_data);
この出力を提供します:
HASH {
time => 1233173875
error => 0
node => HASH {
vid => 1011
moderate => 0
field_datestring => ARRAY {
HASH {
value => August 30, 1979
}
}
field_tagged_persons => ARRAY {
HASH {
nid => undef
}
}
...and so on...