in reply to Can't Use String as an Array Ref Help!

I am getting an error like : "Can't use string (" SOMETHING ") as an array ref while " strict refs" in use"

Where? I don't see what would output that error in that code.

I could see the error popping later if you treat @$new_array_ref as rows of fields instead of a flat array.

missing | v push @{$new_array_ref}, [ $one, $two, $three, $four, $five, $six, $sev +en, $eight, $nine, $ten, $eleven ];

Update:

By the way, DBI calls don't set $!, and it's silly to duplicate RaiseError. Cleaner:

my $sth = $dbh->prepare($sql, { RaiseError => 1 }); $sth->execute(); my @new; while (my $row = $sth->fetch()) { $row[0] =~ s/2009/01112009/g; $row[4] =~ s/204/APROV/g; $row[5] =~ s/john/John/g; # Can't just push $row. # Must make copy of $row # according to DBI docs. push @new, [ @$row ]; } print(Dumper(\@new));

Replies are listed 'Best First'.
Re^2: Can't Use String as an Array Ref Help!
by Anonymous Monk on Apr 23, 2009 at 19:18 UTC
    I am still getting stranger errors, I am combiing one array ref with another like this:
    for my $i (0..$#$new_array_ref) { push @{$new_array_ref->[$i]}, @{ ref($sec_new_array_ref->[$i]) eq +'ARRAY' ? $sec_new_array_ref->[$i] : [(' ') x 3] +}; } unshift @{ $all_data_first }, $ref_header;

      I have no idea what that is suppose to do.
        The $#$new_array_ref is the new array ref from the code sample above. The $ref_header is a variable that will add some more data using unshift, I think that the way this is
        push @{$new_array_ref} ,[$one, $two, $three, $four, $five, $six, $seve +n, $eight, $nine, $ten, $eleven];

        on the new array ref is where the bug is.