The Data::Dumper was left over from initial debugging, I have removed it.
Agreed on the __DATA__ issue. In fact you can't reread from __DATA__ without certain precautions. I have moved the while outside of the new method to avoid this issue. I do however prefer to keep the data in plain text rather then a data structure for reablility. Thanks for the feedback.