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
> 

Reply via email to