给定以下XML::Simple对象,如何将其中一个键值复制到标量赋值中。以下输出来自print Dumper($xmlobjectreturnedfrommodule);
。
$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
引起了这种情况还是遗漏了什么?
答案 0 :(得分: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
循环遍历散列并检索键/值。