Syntactic Confectionery Delight | |
PerlMonks |
Re: Passing the value of a global variable inside a subroutine (updated)by haukex (Archbishop) |
on Jul 08, 2018 at 15:56 UTC ( [id://1218120]=note: print w/replies, xml ) | Need Help?? |
The reason this doesn't work is because a foreach loop localizes its variable to the loop, and you're using a lexical (my) variable, so the localized value is not available outside of the loop: The foreach loop iterates over a normal list value and sets the scalar variable VAR to be each element of the list in turn. If the variable is preceded with the keyword my, then it is lexically scoped, and is therefore visible only within the loop. Otherwise, the variable is implicitly local to the loop and regains its former value upon exiting the loop. If the variable was previously declared with my, it uses that variable instead of the global one, but it's still localized to the loop. It's not good practice to pass arguments to subroutines as global variables, and I strongly recommend using actual subroutine parameters instead. Also, by the way, you should check the return value of system for errors; see its docs for details - I've just included the bare minimum below.
<Reveal this spoiler or all in this thread>
Update: I missed this initially: the problem is $server variable cannot be passed inside the subroutines Could you explain why not?
In Section
Seekers of Perl Wisdom
|
|