On Jul 28, Pandey Rajeev-A19514 said: >In this subroutine, @FORMATTED_OUTPUT was filled up as a 2 dimensional >array $FORMATTED_OUTPUT[$i][$j].
>sub ABC { >...... SOME CODE >return (\$rows, \$cols, [EMAIL PROTECTED]); >} WHY are you returning a reference to a scalar? If $rows is a reference to an array, you can just return $rows. Returning \$rows means you have a reference to a reference to an array. That's rarely useful. What *are* $rows and $cols? >In subroutine DEF, ABC is called, and the dimension of @buffer increased >to 3, ie it became a three dimensional array and the array elements can >be accessed as $buffer[0][$i][$j]. >sub DEF { >my @buffer, $row, $col; That is an improper statement. my (@buffer, $row, $col); > ($$row, $$col, @buffer) = ABC('INPUT', 'Interface', 'OUTPUT', 'IP-Address'); This is not going to work very well. If we correct the ABC() function to return $rows, $cols, and [EMAIL PROTECTED], then why not just do: my ($r, $c, $buffer) = ABC(...); Now you have variables of the exact same form that you returned from ABC(). $r and $c are whatever $rows and $cols are, and $buffer is a reference to the @FORMATTED_OUTPUT array. You can't automagically turn an array reference into an array by saying: @array = [EMAIL PROTECTED]; which is what you were trying to do. All that does is store a reference to an array as element 0 of @array. That's why you need to do $buffer[0][$i][$j]. > PRINT (\$$row, \$$col, [EMAIL PROTECTED]); I have no idea WHY you're sending a reference to the dereferenced $row. PRINT($r, $c, $buffer); Sending a reference to @buffer here, as you did, means that PRINT() would be receiving a reference to an array, whose first element is a reference to an array. Then, when you'd say my ($row, $col, @buffer) = @_; in the PRINT() function, @buffer would be an array with one element: a reference to an array, with one element, a reference to an array. That's why you'd have to say $buffer[0][0][$i][$j]. In short, once your FIRST function returns a reference to an array, use it as a reference to an array: sub foo { my @data = qw( john jacob jingleheimer schmidt ); return [EMAIL PROTECTED]; } sub bar { my $d = foo(); print $d->[2]; # 'jingleheimer' } bar(); -- Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ <stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. [ I'm looking for programming work. If you like my work, let me know. ] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]