Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re: require, globals, and some various mayhem

by perrin (Chancellor)
on Jun 06, 2009 at 05:21 UTC ( #768996=note: print w/replies, xml ) Need Help??

in reply to require, globals, and some various mayhem

What you're missing is that those aren't globals. Variables declared with my() are lexical, not global, and the reason it works when the subs are defined within the same script is that the lexical variables and the sub are in the same scope.

What you should do is pass the variables to the sub. However, your globals approach will work, provided you declare the variables with our() instead of my().

  • Comment on Re: require, globals, and some various mayhem

Replies are listed 'Best First'.
Re^2: require, globals, and some various mayhem
by GaijinPunch (Pilgrim) on Jun 06, 2009 at 06:54 UTC
    Cheers, I will try that. Any idea why it worked properly before? Maybe I hallucinated the whole thing.
      If you had them in separate files before, it couldn't have worked. Maybe you weren't running the code you thought you were.
      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, 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 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;

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://768996]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2023-02-04 21:11 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (31 votes). Check out past polls.