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 /\^/;

to

my @rec = split /\s*\^\s*/;