in reply to mod-perl and globals
Depends. If you're using Apache::Registry as the PerlHandler, you've got some issues to deal with that are very confusing and hard to explain. Look here to read about my() scoped variables in nested subroutines, which is essentially what file-scoped lexicals are under Apache::Registry. As Aighearach mentioned, it treats your script as if it were just another subroutine.
Real Globals are different. If you want file-scoped variables in your script, without the other traps, then you can use vars.
As for begin blocks, see here.