2014-01-09 36 views
0

鑑於以下XML::Simple對象,我將如何將其中一個鍵值複製到標量分配中。以下輸出來自print Dumper($xmlobjectreturnedfrommodule);Perl:在標量上下文中訪問XML :: Simple值

$VAR1 = { 
      'Address2' => {}, 
      'City' => {}, 
      'EmailAddress' => {}, 
      'FName' => {}, 
      'PostalCode' => {}, 
      'LoginID' => {}, 
      'StateProvinceChoice' => {}, 
      'StateProvince' => {}, 
      'Phone' => {}, 
      'Country' => {}, 
      'Site' => {}, 
      'Address1' => {}, 
      'PhoneExt' => {}, 
      'LName' => {}, 
      'OrganizationName' => {}, 
      'Fax' => {} 
     }; 

通常用我只是使用類似下面這樣的hashref

print $xmlobjectreturnedfrommodule->{'LoginID'}; 

,但它返回下面的HASH(0x1e32640),而不是在hashref密鑰值。有什麼關於XML::Simple這是造成這個還是我錯過了什麼?

回答

3

你在做什麼是對的。檢查:

#!/usr/bin/perl 
use strict; 
use warnings; 

my $VAR1 = { 
      'LoginID' => {}, 
     }; 

print $VAR1->{LoginID}; 

輸出:

HASH(0x8231818) 

LoginID指向散列引用基本上是空的。如果修改爲下面的代碼,那麼你會得到一個空的哈希:

#!/usr/bin/perl 
use strict; 
use warnings; 
use Data::Dumper; 

my $VAR1 = { 
      'LoginID' => {}, 
     }; 

print Dumper ($VAR1->{LoginID}); 

輸出:

$VAR1 = {}; 

,但它返回下面的HASH(0x1e32640)代替鑰匙值在hashref。有什麼關於XML :: Simple導致這個或我錯過了什麼?

你打印出來(print $xmlobjectreturnedfrommodule->{'LoginID'};)的方式,它永遠不會返回hasref的鍵/值不論hashref是否爲空。它會一直返回類似HASH(0x1e32640),因爲這就是$xmlobjectreturnedfrommodule->{'LoginID'}所持有的東西。換句話說,{}是一個散列引用。

要打印鍵/值,您需要使用for循環遍歷散列並檢索鍵/值。