As for where the warnings are coming from, they are being generated by variables within the here document starting at line 349. Any variables inside which have not been previously assigned will give you this warning and report line 349. This includes any keys in the data hash which have not been previously assigned, even if the data hash has been created.

A good way to debug it would be using Data::Dumper as previously suggested for the data hash and manually inspecting any other variables used within that here document.

First, I want to thank everyone who helped me with this via this node or the CB.

Bart/blokhead pointed out that the commented subroutine calls in my example weren't infact commented as I thought they were. This allowed me to see that the issue was with an ODBC session I was having within the subroutine (printOwners) itself. I instead decided to use DBI and everything seems to be working great.