in reply to Push hash reference on array problem

You really need to trim that code down to something much smaller that still demonstrates your problem.
Statement that does not work but should:

push @dfdata_out, (\%dfdata_row);
Well, you're expecting an array of hashrefs and that's exactly what your push should do (the parentheses are unnecessary, btw).

Are you sure %dfdata_row contains what you think it does? Data::Dumper can help you determine its contents easily.