in reply to passing array references

You could turn the problem around and instead of returning references to results pass in references to where you want the results stored.

sub foo { my( $s, $a, $s1, $a2 ) = @_; ${$s} = 42; @{ $a } = 0..5 ${$s1} = sin( 1 ); @{ $a2 } = qw( yadda yadda yadda ); return; } foo( \$a, \@b, \$c, \@d );

Update: Oop, left off making scalars references as well

Replies are listed 'Best First'.
Re^2: passing array references (OT)
by graq (Curate) on Dec 06, 2004 at 10:58 UTC
    I like this approach because it allows for some nice sanity checking too (I know it is only 1 array_ref, but it is the principle)
    sub get_my_list { my $array_ref = $_; if( &some_other_func() ){ @{$array_ref} = qw( Yadda yAdda yaDda ); return 1; } return 0; } if( get_my_list(\@array) ){ print 'I got this array: '.join(',',@array); }else{ print 'Failed'; }
    But leading back to your original question, my initial thoughts would also be to use a hash_ref. Your scalar-array data pattern lends itself well to a hash. And if the hash key (scalar) is a key to a particular function that you wish to perform on the array then your method becomes easily scalable.