I suspect for this to work well, you are going to need to "use" instead of "require". I might be wrong, but I'm sure approach below will work. Here is some boiler-plate for you. Make a file called my_subs.pm, and stick modified version of this in there. The "use my_subs" will cause this .pm code to run before your program and the globals will exist.
#file my_subs.pm
use strict;
use warnings;
package my_subs;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
use Exporter;
our $VERSION=1.0;
our @ISA = qw(Exporter);
our @EXPORT = qw(GLOBAL1, GLOBAL2, XYZZY);
our @EXPORT_OK = qw();
our $GLOBAL1 = 23;
our $GLOBAL2;
sub XYZZY{}
1; # important!!! every .pm file must return "true", 1; is
# easiest way to do that!
###### in main program #####
use my_subs;
# do something with XYZZY(a,b);
# my $a=$GLOBAL1 +23;
|