my @array = @{$_[1]}
makes a copy of the array. When you push items onto the copy, the original array is not affected.
I assume you want your function to actually modify the array pointed to by the reference. To do that, eliminate the my @array = ...
line and change your push
calls to be like the following, which uses the reference without copying:
push (@{$_[1]} , $row);
For readability, you can assign the array reference to a named scalar variable and use that instead:
my $arrayRef = $_[1];
push @{$arrayRef}, $row;