Your use of the term "flat file" does not make sense to me. I can't figure out what you really mean when you say:
The flat file has this
@HASHES = ( \%Data_Directories_fetch,
\%DataDirectories_erase,
\%Program_fetch,
\%Program_erase,
\%Configuration_and_Table_Files_erase,
\%Configuration_and_Table_Files_fetch,
\%Create_Database,
\%Load_Database );
That's just a snippet of perl code, building an array from a list of references to hashes. It is not a "flat file", because a flat file is a stream of plain-text data, usually structured as a table (each line of text is a row, containing one or more columns).
When you say "I am attempting to read a flat file that describes an array of hash references...", I don't understand how a flat file can do this -- hash references can only exist as such in a running perl script. A flat file can contain the data that would be loaded into a hash by a perl script, and then you can use a reference to the hash within that script. But the flat file has nothing to do directly with hash references.
You'll need to clarify what it is you are trying to do.