Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Re: Re: Re: Re: Some suggestions on coding style - a chance to critique

by broquaint (Abbot)
on Jun 26, 2002 at 16:36 UTC ( #177431=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Re: Re: Some suggestions on coding style - a chance to critique
in thread Some suggestions on coding style - a chance to critique

I'm confused to what the purpose of passing a variable by reference is since you claim that you don't *have" to in order to modify it
A good reason for passing references is so you can pass distinct groups of aggregate data types e.g
sub three_args { my($array, $scalar, $hash) = @_; print "three_args() got - $array, $scalar, $hash\n"; } my $scalar = 'a string'; my @array = qw(foo bar baz); my %hash = (key => 'value'); # with references three_args(\@array, $scalar, \%hash); # without references three_args(@array, $scalar, %hash); __output__ three_args() got - ARRAY(0x81089ac), a string, HASH(0x81089f4) three_args() got - foo, bar, baz
As you can see, if you don't pass an array by reference it flattens out (the same goes for hashes) because it's in list context (the default context when passing arguments to user-defined functions). However I can't think of any particularly compelling reason off the top of my head for passing simple scalars by reference. It's generally a much better idea to return the desired values from the function.
If the subroutine can modify this variable no matter how you pass it, what's the point of distinguishing between the two?
For the clarity and simplicity of code. You're more than welcome to access the variables that were passed to you through @_, but you're doing so at your own risk (and anyone else that has to maintain your code). To draw a similarity between with C++ - @_ is sort of like having all your arguments as references (i.e foo(int& x) where as passing by reference is more like passing pointers.
HTH

_________
broquaint


Comment on Re: Re: Re: Re: Re: Some suggestions on coding style - a chance to critique
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (7)
As of 2014-12-20 04:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (95 votes), past polls