0

次のXML::Simpleオブジェクトが与えられた場合、キー値の 1 つをスカラー割り当てにコピーするにはどうすればよいでしょうか。以下の出力 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) を返していますhashrefXML::Simpleこれを引き起こしている何かがありますか、それとも何か不足していますか?

4

1 に答える 1

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'};のキー/値を返すことはありません。それが保持しているものであるため、常に次のようなものが返されます。つまり、ハッシュ参照です。hasrefhashrefHASH(0x1e32640)$xmlobjectreturnedfrommodule->{'LoginID'}{}

forキー/値を出力するには、ループを使用してハッシュをウォークスルーし、キー/値を取得する必要があります。

于 2014-01-09T04:32:17.480 に答える