Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Need some help with a dodgy variable

by tachyon (Chancellor)
on Jul 30, 2001 at 18:09 UTC ( #100872=note: print w/ replies, xml ) Need Help??

in reply to Variable Scope

I have no idea what you are doing wrong because you post no code. Could I suggest How to get the most of your question from the monks to you.




Comment on Re: Need some help with a dodgy variable
Replies are listed 'Best First'.
Re: Re: Need some help with a dodgy variable
by Anonymous Monk on Jul 31, 2001 at 16:55 UTC
    It would be pointless me posting my code as my question explains it exactly how it is.
    Ive only been using perl for the last two weeks, so bear with me please.

    I tried using 'use strict' but that makes my program to not work at all. Its definately not a my variable.

    heres an example then of what i mean:

    sub this_sub { $this_variable = "Jeff"; } sub that_sub { print "Hello "."$this_variable"; }

    Imagine these subs have been called accordingly, and when the last one is called, it just says "Hello ".
      A couple of remarks here.
      • If 'use strict' makes your program break, then take the time to fix what strict is complaining about. It will never complain about something that it shouldn't. (At least, not at the level you say you're programming at.)
      • Now that you have posted even just an example piece of code, we now know exactly what it is you're having a problem with. There are a number of potential problems you might have been having. Now that you have an example, I can give you a suggestion.
      Try the following code. Run it "as is" once, to understand what it's doing. (You might have to change where the Perl interpreter is.)

      #!/usr/local/bin/perl use strict; use warnings; my $file_scoped_variable = ''; sub modify_var { $file_scoped_variable = "Var Set"; } sub print_var { print "Hello ... " , $file_scoped_variable , "\n"; } &modify_var; &print_var; __END__
      If, when you try that small script, it doesn't work, then tell us why it doesn't work. Don't just say "Sorry, it's broken."

      The only way to get the result you note is to call that_sub() before this_sub(). This prints "Hello Jeff" just fine

      sub this_sub { $this_variable = "Jeff"; } sub that_sub { print "Hello "."$this_variable"; } this_sub(); that_sub(); # prints Hello Jeff

      All I can presume is that your test case above is not the same as your real code as the test works exactly as expected. this_sub sets the global var $this_variable which is then available everwhere.




Log In?

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2015-10-07 07:15 GMT
Find Nodes?
    Voting Booth?

    Does Humor Belong in Programming?

    Results (172 votes), past polls