azamatsmith has asked for the wisdom of the Perl Monks concerning the following question:

I am having trouble accessing certain parts of the follow Hash of Hashes/Arrays. I am very new to Perl so any help that you could give me would be appreciated. I am able to access other hashes but I cannot access the arrays. I specifically need to be able to retrieve the 'ConfItemName' value in the Fuels hash but it is in an array which I have no idea how to access. Thank you for the help and here is the file that I am using:

It's hard to see but at 'ConfQty' it starts an array of hashes.

$VAR1 = { 'Configuration' => [ { 'Performances' => { 'Performance' => [ { 'L +istItemId' => 'High', 'R +ate' => '0.0', 'S +peed' => '0.92' }, { 'L +istItemId' => 'Low', 'R +ate' => '0.0', 'S +peed' => '0.92' }, { 'L +istItemId' => 'Medium', 'R +ate' => '0.0', 'S +peed' => '0.92' } ] }, 'SLID' => 'FAST', 'ConfigurationKey' => 'XXXXXXXXXX', 'ModelCode' => 'G35', 'LastModified' => { 'TimeStamp' => '2013- +04-24T13:20:32Z', 'SourceSystem' => 'Wi +ndows', 'SourceNode' => 'Clie +nt' } }, { 'ConfItems' => { 'ConfQty' => [ + { + 'ConfItem' => { + 'Fuel' => { + 'Standoff' => 'false' +, + 'Type' => 'Gasoline', + 'ReusableCode' => 'NO +', + 'Category' => 'fuels' +, + 'ConfItemName' => 'Et +hanol', + 'LastModified' => { + 'Ti +meStamp' => '2013-04-09T09:45:48Z', + 'So +urceSystem' => 'Windows', + 'So +urceNode' => 'Client' + } + } + }, + 'Quantity' => '8' + }, + { + 'ConfItem' => { + 'Fuel' => { + 'FuelType' => 'Gasoli +ne', + 'ConfigurationCode' = +> 'Gasoline', + 'Category' => 'fuels' +, + 'ConfItemName' => 'Et +hanol', + 'LastModified' => { + 'Ti +meStamp' => '2013-04-09T15:52:23Z', + 'So +urceSystem' => 'Windows', + 'So +urceNode' => 'Client' + } + } + }, + 'Quantity' => '8' + }, + } ] }; foreach my $e (@{$getConfigurationsResults->{Configuration}}) {

Comment on Accessing data in a Hash of Arrays
Download Code
Re: Accessing data in a Hash of Arrays
by kennethk (Monsignor) on Apr 25, 2013 at 15:01 UTC
    print $getConfigurationsResults->{Configuration}[1]{ConfItems}{ConfQty}[0]{ConfItem}{Fuel}{ConfItemName}

    or possibly

    for my $first (@{$getConfigurationsResults->{Configuration}}) { next unless $first->{ConfItems}; for my $second (@{$first->{ConfItems}{ConfQty}}) { print $second->{ConfItem}{Fuel}{ConfItemName}, "\n"; } }

    See perllol.


    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

      Thanks Kennethk! This was exactly what I was needing help with and it worked perfectly:

      for my $first (@{$getConfigurationsResults->{Configuration}}) { next unless $first->{ConfItems}; for my $second (@{$first->{ConfItems}{ConfQty}}) { print $second->{ConfItem}{Fuel}{ConfItemName}, "\n"; } }
Re: Accessing data in a Hash of Arrays
by Anonymous Monk on Apr 26, 2013 at 04:05 UTC