Nested Perl Hash -


i'm trying take value hash , use key next level hash, code works, thinking there has better way this.

is there way avoid k* array variables?

my @key = keys %data3; $devicetype = $key[0]; @k = keys %{$data3 {$devicetype} };  ## uber ugly, find better way. $measinfoid = $k[0];  @k1 = keys %{$data3 {$devicetype} {$measinfoid}}; $deviceid = $k1[0]; @k2 = keys %{$data3 {$devicetype} {$measinfoid} {$deviceid}}; $location = $k2[0]; @k3 = %{$data3 {$devicetype} {$measinfoid} {$deviceid} {$location}}; $measobjectldn = $k3[0];  print ("data: $devicetype, $measinfoid, $deviceid, $location, $measobjectldn\n");     foreach $m ( keys %{ $data3 {$devicetype} {$measinfoid} {$deviceid} {$location} {$measobjectldn} } ){   print("ok: $m\n"); } 

%data3 looks this:

$var1 = 'nthlrfe'; $var2 = {     'dia' => {         'njbb-hlr-2' => {             'njbb' => {                 'lte-1/dia-1' => {                     'diaunknownavps' => '0',                     'diacerrejsysinovl' => '0',                     'diaprotocolerrors' => '0',                     'diawrongprottype' => '0',                     'diamessagercvd' => '0',                     'diaoctetsent' => '0',                     'diacerrejprntinwhtlst' => '0',                     'diaoctetrcvd' => '0',                     'diamessagedscrd' => '0',                     'diacerrejconavailable' => '0',                     'diamessagesent' => '0',                     'diacerrejmaxconexcd' => '0'                 }             }         }     } }; 

thanks!

keys aren't sorted, "first key" won't same.

that said, if want compact bit, following should work:

my $devicetype = (keys %data3)[0]; .... $measinfoid = (keys $data3{$devicetype})[0]; .... $deviceid = (keys $data3{$devicetype}{$measinfoid})[0]; 

this ugly , not want guy comes after reading this.

keys work on hash refs hashes starting perl 5.14. if you're older that, you'll have dereference full on hash.


Comments

Popular posts from this blog

java - Intellij Synchronizing output directories .. -

git - Initial Commit: "fatal: could not create leading directories of ..." -