When you assign to hash like that, Perl is expecting to see an even-number-sized list of elements to put in the hash- key/ value pairs. If
$diary_data[0] is a reference (it is) to the array where the key/value pairs are (this I don't know), then you'll want to use
@{$diary_data[0]};
This resolves the pointer/reference and "enters" the array into the hash as key/value pairs. Then your print statements will work fine. Also, be sure to use strict;, use warnings;, and use diagnostics; for better error-reporting, though I'm not sure if you've already throw those in.
Update: Ovid's node is probably right, now that I reread your statement "returns array of hashes".
Update2: AgentM wins! Fatality!
AgentM Systems nor Nasca Enterprises nor
Bone::Easy nor Macperl is responsible for the
comments made by
AgentM. Remember, you can build any logical system with NOR.