Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

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
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 my_subs.pm, 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 my_subs.pm 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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2014-12-21 18:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (106 votes), past polls