| Eric at Lucii.org on 20 Jan 2011 11:45:13 -0800 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| [PLUG] perl question |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I have a data structure in perl:
@output
It is sparse (not all indexes have values.)
Those that do look like this example which would be something like $output[5]:
$VAR1 = {
'128' => {
'salutation' => 'Dr.',
'area' => '800',
'spec_link' => '131',
'state' => 'PA',
'last_name' => 'Smith',
'dr_id' => '1',
'city' => 'Swarthmore',
'middle' => 'A',
'active' => undef,
'phone' => '555-1212',
'description' => 'some description goes here',
'sex' => 'M',
'address2' => '',
'loc_no' => '1',
'zip' => '19067',
'title' => 'DMD',
'address1' => '123 Any Street.',
'first_name' => 'John'
}
};
When I put data in the element I do it like this:
$var1 = 5 ; $var2 = 128 ;
$output[$var1]->{$var2}->{'description'} = "some description goes here" ;
To get the data out I walk through the array, skipping indexes where there is no
data. Once I find an array element with data I want to access the elements.
Currently, the only way I can get to it is to use Dumper to produce the above
print out.
How do I find out what the {'128'} value is so that I can address the elements?
I tried this:
for ( $x = 0; $x < $#output; $x++ ) {
next if not defined $output[$x] ;
$hashKey = keys $output[$x] ;
print "record: $x has last name of: "
. $output[$x]->{$hashKey}->{'last_name'} ;
}
... but perl barfs on the use of keys
Type of arg 1 to keys must be hash (not array element) at ./build_fast_doc.pl
line 229, near "] ;"
What am I missing here? I thought the array elements here ARE hashes.
BTW: This is perl, v5.8.7
Thanks,
Eric
- --
# Eric Lucas
#
# "Oh, I have slipped the surly bond of earth
# And danced the skies on laughter-silvered wings...
# -- John Gillespie Magee Jr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk04kKUACgkQ2sGpvXQrZ/469gCeJYSGZV/IF/PYECHlTYK6k5Iq
Up0AmwdPj0XPbhl1asrADLj4bsqVn2To
=CiFX
-----END PGP SIGNATURE-----
___________________________________________________________________________
Philadelphia Linux Users Group -- http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug