Perl:在标量上下文中访问XML::Simple值

Perl:在标量上下文中访问XML::Simple值,perl,xml-simple,Perl,Xml Simple,给定以下对象,如何将其中一个键值复制到标量赋值中。如果来自打印转储程序($xmlobjectreturnedfrommodule),则下面的输出 通常使用hashref时,我会使用如下内容: print $xmlobjectreturnedfrommodule->{'LoginID'}; 但是它返回以下哈希(0x1e32640),而不是hashref中的keys值。是不是因为XML::Simple导致了这种情况,还是我遗漏了什么?您所做的是正确的。选中此项: #!/usr/bin/per

给定以下对象,如何将其中一个键值复制到标量赋值中。如果来自
打印转储程序($xmlobjectreturnedfrommodule),则下面的输出

通常使用
hashref
时,我会使用如下内容:

print $xmlobjectreturnedfrommodule->{'LoginID'};

但是它返回以下哈希(0x1e32640),而不是
hashref
中的keys值。是不是因为
XML::Simple
导致了这种情况,还是我遗漏了什么?

您所做的是正确的。选中此项:

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

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

print $VAR1->{LoginID};
输出:

HASH(0x8231818)
$VAR1 = {};
LoginID
指向一个本质上为空的哈希引用。如果按以下方式修改代码,则会得到一个空哈希:

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

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

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

HASH(0x8231818)
$VAR1 = {};
但是它返回以下哈希(0x1e32640),而不是
hashref
中的keys值。是XML::Simple导致了这种情况还是我遗漏了什么

您打印它的方式(
print$xmlobjectreturnedfrommodule->{LoginID'};
),它永远不会返回
hasref
的键/值,无论
hasref
是否为空。它将始终返回类似于
散列(0x1e32640)
的内容,因为
$xmlobjectreturnedfrommodule->{LoginID'}
就是这样保存的。换句话说,
{}
是一个散列引用


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

您所做的是正确的。选中此项:

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

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

print $VAR1->{LoginID};
输出:

HASH(0x8231818)
$VAR1 = {};
LoginID
指向一个本质上为空的哈希引用。如果按以下方式修改代码,则会得到一个空哈希:

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

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

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

HASH(0x8231818)
$VAR1 = {};
但是它返回以下哈希(0x1e32640),而不是
hashref
中的keys值。是XML::Simple导致了这种情况还是我遗漏了什么

您打印它的方式(
print$xmlobjectreturnedfrommodule->{LoginID'};
),它永远不会返回
hasref
的键/值,无论
hasref
是否为空。它将始终返回类似于
散列(0x1e32640)
的内容,因为
$xmlobjectreturnedfrommodule->{LoginID'}
就是这样保存的。换句话说,
{}
是一个散列引用


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

您所做的是正确的。选中此项:

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

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

print $VAR1->{LoginID};
输出:

HASH(0x8231818)
$VAR1 = {};
LoginID
指向一个本质上为空的哈希引用。如果按以下方式修改代码,则会得到一个空哈希:

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

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

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

HASH(0x8231818)
$VAR1 = {};
但是它返回以下哈希(0x1e32640),而不是
hashref
中的keys值。是XML::Simple导致了这种情况还是我遗漏了什么

您打印它的方式(
print$xmlobjectreturnedfrommodule->{LoginID'};
),它永远不会返回
hasref
的键/值,无论
hasref
是否为空。它将始终返回类似于
散列(0x1e32640)
的内容,因为
$xmlobjectreturnedfrommodule->{LoginID'}
就是这样保存的。换句话说,
{}
是一个散列引用


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

您所做的是正确的。选中此项:

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

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

print $VAR1->{LoginID};
输出:

HASH(0x8231818)
$VAR1 = {};
LoginID
指向一个本质上为空的哈希引用。如果按以下方式修改代码,则会得到一个空哈希:

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

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

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

HASH(0x8231818)
$VAR1 = {};
但是它返回以下哈希(0x1e32640),而不是
hashref
中的keys值。是XML::Simple导致了这种情况还是我遗漏了什么

您打印它的方式(
print$xmlobjectreturnedfrommodule->{LoginID'};
),它永远不会返回
hasref
的键/值,无论
hasref
是否为空。它将始终返回类似于
散列(0x1e32640)
的内容,因为
$xmlobjectreturnedfrommodule->{LoginID'}
就是这样保存的。换句话说,
{}
是一个散列引用

要打印键/值,需要使用
for
循环遍历散列并检索键/值