Well, personally I'd just use a hash... if a module was needed, the hash would just get exported via Exporter.
Perl is only as complicated as you want to make it.
my creates a var usable within the current scope. If a var is my'd from inside a file, but not inside a sub, then it's available from everything inside that file. The var can't be accessed from outside of that file, in that case.
our is the same, but it allows outside access in many cases. However, I avoid our completely, as it requires 5.6+ and tends to do unintended/spooky things. All of my vars that need to be globals are done so via use vars.