The problem with your solution is that it is installing global package variables into the calling module (or main script). Normally - and also in ikegami's post - you use local my variables for objects!
Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.