http://www.perlmonks.org?node_id=931746


in reply to Using variables in require file... not possible?

Using global variables is really a bad practice. But if you realy want to make the program with this aproach, you should know some tricks. When you are using 'use strict' pragma you must declare your global variables using explicit package prefix. Though you don't declare any package in your main module, it has name 'main' defined implicitly. Hence you need to declare your 'foo' global as
use strict; $main::foo = 'bar'; # that's ok
instead
use strict; $foo = 'bar'; # error!!! it doesn't work with strict pragma!
So when you want to use global $foo (defined in main script) in other modules you need to use it's full name - $main::foo. Simple example:

1. Script main.pl
#!/usr/bin/perl use strict; use pkg1; $main::foo = 'bar'; print pkg1_get_foo()."\n";
2. Module pkg1.pm
use strict; sub pkg1_get_foo { return "From pkg1: $main::foo"; } 1;