0

给定以下XML::Simple对象,我将如何将其中一个键值复制到标量赋值中。下面的输出 if from 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导致这个还是我错过了什么?

4

1 回答 1

3

你在做什么是对的。检查这个:

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

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

print $VAR1->{LoginID};

输出:

HASH(0x8231818)

theLoginID指向一个基本上为空的哈希引用。如果您修改如下代码,那么您将得到一个空哈希:

#!/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'};,它都不会返回键/值。它总是会返回类似的东西,因为这就是持有的东西。换句话说,是一个哈希引用。hasrefhashrefHASH(0x1e32640)$xmlobjectreturnedfrommodule->{'LoginID'}{}

要打印键/值,您需要使用for循环遍历哈希并检索键/值。

于 2014-01-09T04:32:17.480 回答