I have attempted to create a simple, but annotated version of Data::Dumper. It prints the data structure and in the comment it tells you how to access this very element of the data structure on its own. I am not sure whether it is not confusing in a different way. If you don't mind looking at it and let me know whether it helps you...
If this is your data
my %temp = ( "0x55555555" => { "0x55555555" => [ ["0xAAAAAAAA", "0x9"]
+, ],
"0xAAAAAAAA" => [ ["0xAAAAAAAA", "0x8"], ], },
"0xAAAAAAAA" => { "0x55555555" => [ ["0xFFFFFFFF", "0x8"], ],
"0xAAAAAAAA" => [ ["0x55555554", "0x3"], ], }, );
my $var = \%temp;
it creates this output
{ # ref to hash: $var
'0xAAAAAAAA' => # key of hash, string: +(keys %{$var})[0]
{ # ref to hash: $var->{'0xAAAAAAAA'}
'0xAAAAAAAA' => # key of hash, string: +(keys %{$var->{'0xAA
+AAAAAA'}})[0]
[ # ref to array: $var->{'0xAAAAAAAA'}->{'0xAA
+AAAAAA'}
[ # ref to array: $var->{'0xAAAAAAAA'}->{'0xAA
+AAAAAA'}->[0]
'0x55555554', # scalar: $var->{'0xAAAAAAAA'}->{'0xAAAAAAAA
+'}->[0]->[0]
'0x3', # scalar: $var->{'0xAAAAAAAA'}->{'0xAAAAAAAA
+'}->[0]->[1]
]
]
'0x55555555' => # key of hash, string: +(keys %{$var->{'0xAA
+AAAAAA'}})[1]
[ # ref to array: $var->{'0xAAAAAAAA'}->{'0x55
+555555'}
[ # ref to array: $var->{'0xAAAAAAAA'}->{'0x55
+555555'}->[0]
'0xFFFFFFFF', # scalar: $var->{'0xAAAAAAAA'}->{'0x55555555
+'}->[0]->[0]
'0x8', # scalar: $var->{'0xAAAAAAAA'}->{'0x55555555
+'}->[0]->[1]
]
]
}
'0x55555555' => # key of hash, string: +(keys %{$var})[1]
{ # ref to hash: $var->{'0x55555555'}
'0xAAAAAAAA' => # key of hash, string: +(keys %{$var->{'0x55
+555555'}})[0]
[ # ref to array: $var->{'0x55555555'}->{'0xAA
+AAAAAA'}
[ # ref to array: $var->{'0x55555555'}->{'0xAA
+AAAAAA'}->[0]
'0xAAAAAAAA', # scalar: $var->{'0x55555555'}->{'0xAAAAAAAA
+'}->[0]->[0]
'0x8', # scalar: $var->{'0x55555555'}->{'0xAAAAAAAA
+'}->[0]->[1]
]
]
'0x55555555' => # key of hash, string: +(keys %{$var->{'0x55
+555555'}})[1]
[ # ref to array: $var->{'0x55555555'}->{'0x55
+555555'}
[ # ref to array: $var->{'0x55555555'}->{'0x55
+555555'}->[0]
'0xAAAAAAAA', # scalar: $var->{'0x55555555'}->{'0x55555555
+'}->[0]->[0]
'0x9', # scalar: $var->{'0x55555555'}->{'0x55555555
+'}->[0]->[1]
]
]
}
}
So if you pick any expression after the colon in the comment and use it or print it, it gives you exactly the part of the structure you pick it from. Couple of examples:
print +(keys %{$var->{'0xAAAAAAAA'}})[1], "\n";
print $var->{'0x55555555'}->{'0xAAAAAAAA'}->[0]->[0], "\n";
print Dumper( $var->{'0x55555555'}->{'0x55555555'} );
gives you
0x55555555
0xAAAAAAAA
$VAR1 = [
[
'0xAAAAAAAA',
'0x9'
]
];
Do I make sense?
|