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.