Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: subroutines + returning more than 1 value

by OM_Zen (Scribe)
on Feb 28, 2003 at 17:19 UTC ( [id://239482]=note: print w/replies, xml ) Need Help??


in reply to subroutines + returning more than 1 value

Hi ,

The arrays when input to a function will be obtained as a list and hence your first array alone gets assigned from the @_ , the array have to be passed as REFERENCE and then the return exits from the function and hence you can use only one of the returns and get the value from the calling part of it
use Data::Dumper; my @seg1 = ("fkgskfgskfgksf","kshflkshfkls"); my @seg2 = ("kgskfgskf","sjfgsjfgjsgfksf"); #create references my $seg1 = \@seg1; my $seg2 = \@seg2; my $seg3 = \@seg3; my $seg4 = \@seg4; my $seg5 = \@seg5; my @pairs = get_pairs($seg1,$seg2,$seg3,$seg4,$seg5); print Dumper \@pairs; sub get_pairs { my @seg_pairs = @_; map {for my $i (1..scalar(@$_)){ push (@pairs , "$_->[$i-1] $_->[$i]\n");} }@seg_pairs; return @pairs; }


The usages of references are many and this is one of the ways to do it

the reference is pushed to an array and the array is passed to the function

the arrays are gotten by doing a dereference and then an array is pushed for that you should have

the array is obtained and the using Data::Dumper is printed and then you could do that you rerquire with it

Replies are listed 'Best First'.
Re: Re: subroutines + returning more than 1 value
by OM_Zen (Scribe) on Mar 02, 2003 at 17:07 UTC
    Hi ,

    The function get_pairs has to be written this way . The previous node has to be ignored as the usage of map is not so much appropriate , though we get the solution as required by that
    use Data::Dumper; my @seg1 = ("one","two","three"); my @seg2 = ("four","five"); #create references my $seg1 = \@seg1; my $seg2 = \@seg2; my $seg3 = \@seg3; my $seg4 = \@seg4; my $seg5 = \@seg5; my @pairs = get_pairs($seg1,$seg2,$seg3,$seg4,$seg5); print Dumper \@pairs; sub get_pairs { my @seg_pairs = @_; my @pairs = map { local $arr_frst_scalar = $_; map { ["$arr_frst_scalar->[$_-1] $arr_frst_scala +r->[$_]"] ; }1..scalar(@$_) }@seg_pairs; return @pairs; } __END__ $VAR1 = [ [ 'one two' ], [ 'two three' ], [ 'three' ], [ 'four five' ], [ 'five' ] ];


Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2024-04-16 08:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found