複雜的哈希我有如下簡單的Perl腳本:處理在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
};
,
但我想要的輸出中的東西different.so我試過下面代碼:
#!/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
};
,但我需要的是爲below.i DONOT需要VAR1等,也=>
在output.I剛需鍵和值有空間,他們
之間
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
}
在哪裏,我去錯在這裏?
您將不得不編寫一個子能夠以您的首選格式遞歸地轉儲散列鍵/值。使用'keys'可以非常簡單地獲得散列和'ref'的所有關鍵字,以找出某個值何時也是散列(然後您將不得不遞歸)或標量。閱讀'perlfunc(1)'瞭解細節。 – salva
你知道你的第一個例子是錯誤的。你應該傳遞給Dumper的參考:'print Dumper(\%x)'。您應該查看Data :: Dumper的文檔並查看它提供的選項。 – TLP
OK ..i got it.Thanks TLP.Please see see my edit – user1939168