Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Re: Need some help with a dodgy variable

by Anonymous Monk
on Jul 31, 2001 at 16:55 UTC ( #101138=note: print w/replies, xml ) Need Help??

in reply to Re: Need some help with a dodgy variable
in thread Variable Scope

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 ".

Replies are listed 'Best First'.
Re: Re: Re: Need some help with a dodgy variable
by dragonchild (Archbishop) on Jul 31, 2001 at 17:09 UTC
    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."
Re: Re: Re: Need some help with a dodgy variable
by tachyon (Chancellor) on Jul 31, 2001 at 17:06 UTC

    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://101138]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2018-02-22 13:17 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (293 votes). Check out past polls.