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]