is going to mash the contents of the array and the value of $count into a single list of values. When this is assigned to (@ary1, $num), all of the values will be put into @ary1.return @retary, $count;
There are two ways to accomplish what you're trying to do. First, you can pass $count before the array contents:
This method still lets you return only one array.return $count, @retary; ... ($count, @ary1) = read_data(...);
The other method is to return a reference to @retary instead of returning the array's contents:
This allows you to return any number of arrays and scalars in any order. It's also more efficient because read_data() is returning a two-value list instead of a fifty- or hundred- or whatever-value list.return \@retary, $count; ... ($ary1, $count) = read_data(...);
Finally, let me add that, if $count is just the number of elements in @retary, there's really no need to pass it as a separate value. The caller can derive the size of the array from the array itself:
@ary1 = read_data(...); $num = @ary1; OR $ary1 = read_data(...); $num = @$ary1;
In reply to Re: Arrays and Scalar Parameters
by kjherron
in thread Arrays and Scalar Parameters
by descartes
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |