2

私は以下のような単純なperlスクリプトを持っています:

#!/usr/bin/perl
use strict;
use Data::Dumper;
my %x;

$x{"a"}="b";
$x{"b"}={'c'=>3,'d'=>4};
$x{"c"}={'e'=>{'f'=>5,'g'=>6},'h'=>{'i'=>7,'j'=>8}};

print Dumper(%x);

これは私を以下のように出力しています:

> ./temp.pl
$VAR1 = 'c';
$VAR2 = {
          'e' => {
                   'g' => 6,
                   'f' => 5
                 },
          'h' => {
                   'j' => 8,
                   'i' => 7
                 }
        };
$VAR3 = 'a';
$VAR4 = 'b';
$VAR5 = 'b';
$VAR6 = {
          'c' => 3,
          'd' => 4
        };
,

しかし、私の希望する出力は何か違うので、以下のコードを試しました:

#!/usr/bin/perl

use strict;
use Data::Dumper;
my %x;

$x{"a"}="b";
$x{"b"}={'c'=>3,'d'=>4};
$x{"c"}={'e'=>{'f'=>5,'g'=>6},'h'=>{'i'=>7,'j'=>8}};

foreach (keys %x )
{
        if(ref($x{$_}) eq "HASH")
        {
        print Dumper(\%{$x{$_}}).",";
        }
        else
        {
        print $x{$_}.",\n"
        }
}

しかし、これは私に以下のような出力を与えます:

> ./temp.pl
$VAR1 = {
          'e' => {
                   'g' => 6,
                   'f' => 5
                 },
          'h' => {
                   'j' => 8,
                   'i' => 7
                 }
        };
,b,
$VAR1 = {
          'c' => 3,
          'd' => 4
        };

しかし、私が必要としているのは以下のとおりです。VAR1なども出力にも必要ありません=>。間にスペースを入れたキーと値が必要です。

c  {
          'e'  {
                   'g'  6,
                   'f'  5
                 },
          'h'  {
                   'j'  8,
                   'i'  7
                 }
        },
a b,
b  {
          'c'  3,
          'd'  4
        }

そこにいるすべてのperlの専門家は、私が必要なときに出力を印刷する正しい方向を誰かに教えてもらえますか?

私はperleoneの提案から必要なものを手に入れました。しかし、私はまた、以下のstaementを試しました:

my %y={"one"=>404,"two"=>\%x};

今私がするなら

print Dumper(\%y);

それは私に次の出力を与えます:

> ./temp.pl
{
          'HASH(0x807f08c)' undef
        }

ここでどこが間違っていたのですか?

4

1 に答える 1

6

ドキュメントをご覧ください。次の設定を使用します。

$Data::Dumper::Pair     = ' ';
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Terse    = 1;

...

print Dumper( \%x );
于 2013-01-21T12:08:52.083 に答える