Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Return value from function

by lyklev (Pilgrim)
on Jul 12, 2007 at 21:26 UTC ( #626321=note: print w/replies, xml ) Need Help??


in reply to Return value from function

If you are returning a simple, short list of values, or even a hash, returning the values is probably the best, because it is the simplest.

However,

my @values = f(...); # simple read, # @values is a copy
or
my %hash = f(...); # hash is also a copy my $value = $hash{'value'};
makes a copy of all values, so if you return a lot of values, you might have some performance issues. In that cast, a reference might be faster.

If you want to return more than one array or arrays and hashes where the returned lengths are unknown, references are your only choice:

my (@v1, @v2) = f(...);
makes @v1 slurp all return values, leaving @v2 empty. Solution, with a few comments:
sub f { (...) return \@v1, \@v2, \%v3; # return 2 array and a hash # reference } my ($ar1, $ar2, $hr3) = f(); # collect references my @ar1 = @{ $ar1 }; # get the first array, # creating a duplicate foreach (@ {$ar2} ) {...} # avoid copying the array, # probably more efficient my $value = $hr3->{'value'} # some people find this # notation cumbersome # and avoid references

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2017-11-19 13:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (281 votes). Check out past polls.

    Notices?