我有一個程序使用XML::Simple
解析一些XML。它在某些時候出現在XML中有冗餘條目,它們被序列化,但我不能在我的生活中找出如何將這些數據作爲簡單字符串返回。這個XML的一個子集看起來像是被XML::Simple
放入數組中。在運行Dumper($data)
其中數據是我解析的XML時,相關小節如下。Perl Data :: Dumper散列在數組中?
Audio = [
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
}
];
我通過我的XML解析輸出的一小部分給一個變量,像這樣:
my @audiostuff = $data->{ClipContent}->{EssenceList}->{Audio};
當我輸出的這個轉儲,我得到以下
$VAR1 = [
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
}
];
所以在捕獲的陣列中看起來都是正確的。該數組似乎有一個元素,並且在該元素中有四個散列。這是我卡住的地方。我不知道如何讓這些哈希中的信息再次返回。我已經嘗試了大約40種不同的東西,我只是將我的頭撞在牆上。我很想將每個散列的值傳遞給一個簡單的本地數組(例如@samplingrate
),其中我擁有所有這四個條目,並且可以通過$samplingrate[0]
等簡單引用它們。
任何幫助將不勝感激。
我很困惑,你永遠不要提@samplingrate在你的例子。我猜,但你在尋找$ samplingrate - > [0]? –
如果你看看數據輸出,SamplingRate實際上是在數組內部的每個散列的內部(至少在我讀它的時候)。我使用SamplingRate作爲示例,但我希望能夠訪問任何數據值。 – szumlins