0

Given the following XML::Simple object how would I copy one of the key values into a scalar assignment. The output below if from print Dumper($xmlobjectreturnedfrommodule);.

$VAR1 = {
          'Address2' => {},
          'City' => {},
          'EmailAddress' => {},
          'FName' => {},
          'PostalCode' => {},
          'LoginID' => {},
          'StateProvinceChoice' => {},
          'StateProvince' => {},
          'Phone' => {},
          'Country' => {},
          'Site' => {},
          'Address1' => {},
          'PhoneExt' => {},
          'LName' => {},
          'OrganizationName' => {},
          'Fax' => {}
        };

Normally with a hashref I would just using something like the following:

print $xmlobjectreturnedfrommodule->{'LoginID'};

but it is returning the following HASH(0x1e32640) instead of the keys value in the hashref. Is there something about XML::Simple that is causing this or am I missing something?

MattSizzle
  • 3,145
  • 1
  • 22
  • 42

1 Answers1

3

What you are doing is right. Check this:

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

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

print $VAR1->{LoginID};

Output:

HASH(0x8231818)

the LoginID is pointing to a hash reference which is essentially empty. If you modify the code as below, then you will get an empty hash:

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

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

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

OutPut:

$VAR1 = {};

but it is returning the following HASH(0x1e32640) instead of the keys value in the hashref. Is there something about XML::Simple that is causing this or am I missing something?

The way you are printing it (print $xmlobjectreturnedfrommodule->{'LoginID'};), it will never return keys/values of the hasref irrespective of whether the hashref is empty or not. It will always return something like HASH(0x1e32640) because that's what $xmlobjectreturnedfrommodule->{'LoginID'} is holding. In other words, {} is a hash reference.

To print the keys/values, you need walk through the hash using a for loop and retrieve keys/values.

slayedbylucifer
  • 22,878
  • 16
  • 94
  • 123