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

Re: Re: Need some help with a dodgy variable

by Anonymous Monk
on Jul 31, 2001 at 16:55 UTC ( [id://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.

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2024-04-26 05:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found