in reply to Push hash reference on array problem
In the loop you are pushing a reference to the same hash onto the list repeatedly, then deleting the data in that hash at the end of the loop.
Declare %dfdata_row in the body of the loop, and don't assign () to it after pushing it onto the list.
In Section
Seekers of Perl Wisdom