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

Answer: Subroutine args by-value vs. by-ref

( #192509=categorized answer: print w/ replies, xml ) Need Help??

Q&A > subroutines > Subroutine args by-value vs. by-ref contributed by Anonymous Monk

All your previous experience is confusing you.

Read perldata, perlsyn, perlref and perlsub (if perlsub exists).

There are no pointers in perl, there are only scalar's hashes's and array's, and references. Some might say there are also lists, and they're right.

subroutines get arguments via the magical @_ variable, meaning every time you say Foo(1,2,3), inside of sub Foo, the @_ array will contain 1,2 and 3 as it's value.

That's pass-by-value.

my @Arra = ( 1, 2, 3, 4 ); PassByReference(\@Arra); sub PassByReference { die "@_"; }
Here are some more examples.
use Data::Dumper; DIE(1..10); DIE(1,2,3,4,5,6,,8,9); DIE( [ 1..10 ] ); DIE( { 1..10 } ); my @ARRAY = 1..10; my %HASH = @ARRAY; DIE( @ARRAY ); DIE( %HASH ); DIE( \@ARRAY ); DIE( \%HASH ); DIE( @ARRAY, \%HASH ); DIE( \@ARRAY, \%HASH ); DIE( \@ARRAY, %HASH ); DIE( \&DIE ); ¨ DIE(); sub DIE { print Dumper(@_) };

Comment on Answer: Subroutine args by-value vs. by-ref
Select or Download Code
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2014-10-22 00:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (112 votes), past polls