You are only getting yourself into as much trouble as any global variable can cause. See, for example,
Global_variable. Pretty much the arguments against usually come down to spooky action at a distance bugs which can be a real pain to root out. You can avoid this by always explicitly passing variables around or using an OO model (
perlboot) and localizing globals to certain packages to make inheritance more clear. It can make sense in certain circumstances, and there are plenty of magic, global variables in Perl (just start reading
perlvar), but you should know what you are getting into before you start using globals.