http://www.perlmonks.org?node_id=390962


in reply to Re: Global variable vs passing variable from sub to sub
in thread Global variable vs passing variable from sub to sub

This has already been covered in other posts, but this may clarify things for Wassercrats.

If you don't scope your variables, it is not immediately obvious whether:
1) You variables will have changed by calling a sub.
2) If the variables did change, whether they were changed on purpose, or accidently.

$x = 0; DoStuffX(); print "As long as no one used global variables, I know that x = 0 ", "without needing to know what DoStuffX does.\n"; if ($x != 0) { print "Nope, I need to spend time looking through ", "DoStuffX to find out why x changed. I really ", "wish the guy used \$x=DoStuffX(\$x) so that I ", "would know whether he changed x intensionally ", "or not.\n\n" }; $y = 0; DoStuffY($y); print "As long as no one used global variables, I know that y = 0 ", "without needing to know what DoStuffY does.\n"; if ($y == 0) { print "Yippie! I can go home early!\n\n" }; sub DoStuffX { # lost of code involving $x $x=$x+1; # lots of code involving $x }; sub DoStuffY { my $y = shift @_; # lost of code involving $y $y=$y+1; # lots of code involving $y };