Hi Guys
I have just resolved the problem.
The problem was the array variable "array_given" in the subroutine.
I replaced :
my @array_given = $_[0];
with
my @array_given = @_;
It works fine.
Thanks for the help.
Tony
> -----Original Message-----
> From: Ho, Tony
> Sent: Wednesday, July 17, 2002 11:43 AM
> To: '[EMAIL PROTECTED]'
> Subject: Multi-dimensional arrays and subroutines
>
> Hi Guys
> I was wondering if you could help me.
>
> I have a multi-dimensional array and I would like to pass it to a
> subroutine as follows :
>
> my @multi_array = ([1,2,3,4], [5,6,7,8]);
> my @result = process_array(@multi_array);
> print "The result is : @result\n";
>
> sub process_array {
>
> my @array_processed;
> my @array_given = $_[0];
>
> $select_data = "select A, B, C, D
> from Table X
> where A = ? and B = ? and C = ? and D = ?";
>
> $sth = $dbh->prepare($select_data)
> or die "Can't prepare SQL statement: ", $dbh->errstr(), "\n";
>
> for (@array_given) {
> $sth->bind_param(1, @$_->[0]);
> $sth->bind_param(2, @$_->[1]);
> $sth->bind_param(3, @$_->[2]);
> $sth->bind_param(4, @$_->[3]);
> $sth->execute();
>
> $sth->bind_columns(undef, \$A, \$B, \$C, \$D);
>
> while ($sth->fetch()) {
> $new_array = join("|", $A, $B, $C, $D);
> unshift(@array_processed, $new_array);
> }
> }
>
> $sth->finish();
>
> return @array_processed;
> }
>
> I am expecting as output the following :
> The result is 1,2,3,4
> The result is 5,6,7,8
>
> The actual output I am getting is :
> The result is 1,2,3,4
>
> What happened to 5,6,7,8 ?
>
> I would be most grateful for any advice.
> Thanks in advance
> Tony
>