【问题标题】:Perl: Accessing XML::Simple values in scalar contextPerl:在标量上下文中访问 XML::Simple 值
【发布时间】:2014-01-09 02:19:42
【问题描述】:

鉴于以下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 是不是有什么问题导致了这种情况,还是我遗漏了什么?

【问题讨论】:

    标签: perl xml-simple


    【解决方案1】:

    你的做法是对的。检查这个:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多