Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
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

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 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?
[Corion]: I think you need to load Readline in the debugger, but I don't know how
[Corion]: Yay, invitation for a team-building workshop, with a team of 100 people :-/
[Eily]: marto after an additional read I started to see the light actually. And choroba's link was helpful as well :)
[Corion]: I'll send my colleague who doesn't yet know the people there, and I'll do production duty instead.
[GotToBTru]: ugh. Thanks Corion

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (14)
As of 2017-07-26 15:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (396 votes). Check out past polls.