Thanks that info will come in handy

> Dan Muey wrote:
> > > Hamish Whittal wrote:
> > > > Hi Everyone,
> > > > 
> > > > I am needing to use some variables throughout all the 
> modules that 
> > > > I have created. I was wondering, bar setting them at the top of 
> > > > each module, what the best means of doing this is. 
> Perhaps setting 
> > > > an environment variable, but what other ideas. The 
> ultimate goal 
> > > > is to be able to change the value in the 'top-level' module and 
> > > > that should have an impact throughout all subsequent modules.
> > > 
> > > Create a module like this:
> > > 
> > >   Common.pm
> > >   ---------
> > >   package Common;
> > > 
> > >   use strict;
> > >   use base 'Exporter';
> > > 
> > >   our @EXPORT = qw/$foo @bar %baz/;
> > > 
> > >   1;
> > > 
> > > Now, in each of your modules, add "use Common;"
> > > 
> > > The variables $foo, $bar, $baz will now be shared globals 
> across all 
> > > the modules that "use Common". Changes to the value of 
> one of these 
> > > in any module will be visible across all the modules, 
> since they are 
> > > all aliasing the same set of variables.
> > 
> > Will this also work if I was to use Common; in a script?
> 
> Sure. "use Common" translates to (essentially):
> 
>    require Common;
>    Common->import();
> 
> The call to import creates an alias in the importing package 
> for each of the items in Common's @EXPORT list.
> 
> > 
> > IE
> > 
> > #!/perl -w
> > 
> > use strict;
> > use Common; # IE example above
> >  print $foo;
> >     for(@bar) {
> >             if(exists $baz{$_}) { }
> >     }
> 
> Yes.
> 
> > 
> > Also in the example above where do I cactually put values in those 
> > variables?
> 
> Doesn't matter. You can assign to them in any package that 
> has "use Common;", or in Common.pm itself. The latter is 
> typical, but by no means required.
> 
> > 
> >    package Common;
> > 
> >    use strict;
> >    use base 'Exporter';
> > 
> >     $foo = "HI";
> >    our @EXPORT = qw/$foo @bar %baz/;
> > # or here : $foo = "HI";
> 
> Either place. But you need "our $foo", to make "use strict" happy.
> 
> n.b. you *don't* need the "our" declaration in any module 
> that includes "use Common". Importing a symbol is good enough 
> to make "use strict" happy.
> 
> > 
> >    1;
> > 
> > > 
> > > (If you already have a common module used by all the 
> other modules, 
> > > just add the "use base" and "our @EXPORT" lines to that
> > > module.)
> > > 
> > > perldoc Exporter (be sure to read this to learn about 
> other options, 
> > > and why the practice of using @EXPORT is generally discouraged).
> 

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to