Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Global variable vs passing variable from sub to sub

by gmpassos (Priest)
on Sep 14, 2004 at 05:24 UTC ( #390746=note: print w/replies, xml ) Need Help??

in reply to Global variable vs passing variable from sub to sub

Humm, don't forget that Perl uses a special variable @_ for the arguments. What you can't forget is that this array @_ is global, but it's elements will change for each call. So, the performance of @_ will be similar to a global variable, but will work as a stack, so, will work for multiple calls of the same sub and recursivelly.

This code will show that:

sub test1 { ++$_[0] ; print "T1 [@_]\n" ; test2($_[0]) ; } sub test2 { ++$_[0] ; print "T2 [@_]\n" ; test3($_[0]) ; } sub test3 { ++$_[0] ; print "T3 [@_]\n" ; print "end\n" ; } my $n = 10 ; test1($n) ; print "N: $n\n" ;
T1 [11] T2 [12] T3 [13] end N: 13
And forget the use of a global variable for any type of code and start learning OO. Take a look at perlobj, perltoot, perlboot and perltooc.

For Object Orientation (OO) I use Class::HPLOO.

Graciliano M. P.
"Creativity is the expression of the liberty".

Replies are listed 'Best First'.
Re^2: Global variable vs passing variable from sub to sub
by kiat (Vicar) on Sep 14, 2004 at 07:11 UTC
    Thanks for your input, gmpassos!

    I would love to switch to the OO mode some day. I've read quite a bit on it and have even got some OO code to work (got some help from castaway). Still, I'm not quite ready yet. Maybe it's just that I think better in terms of procedures (verbs rather than nouns).

    I suppose if I were to write a specific standalone module that serves a single purpose, I might be able to think the OO way much better.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://390746]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2018-05-22 22:32 GMT
Find Nodes?
    Voting Booth?