in reply to Reading data into a hash of hashes.
Also, you could avoid the function call to trim_trailing if you changed
my @rec = split /\^/; [download]
to
my @rec = split /\s*\^\s*/; [download]