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
1. Script main.pl
insteaduse strict; $main::foo = 'bar'; # that's ok
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:use strict; $foo = 'bar'; # error!!! it doesn't work with strict pragma!
1. Script main.pl
2. Module pkg1.pm#!/usr/bin/perl use strict; use pkg1; $main::foo = 'bar'; print pkg1_get_foo()."\n";
use strict; sub pkg1_get_foo { return "From pkg1: $main::foo"; } 1;
In Section
Seekers of Perl Wisdom