http://www.perlmonks.org?node_id=905430


in reply to check bind_columns for undefined values

Why would you want to replace undef values (which correspond to NULL-values in the database) with the string "null" anyway? That can change the datatype of the column (since numeric columns can also contain NULL values, which you change to a text datatype).

To answer your question, if you use

$sth->bind_columns(\$var1, \$var2, \$var3);
You'd have to check all vars to see if they're undef after fetching data and act accordingly.
This method might make things simpler:
@list_of_refs_to_vars_to_bind = (\$var1, \$var2, \$var3); $sth->bind_columns(@list_of_refs_to_vars_to_bind);
Now you can use
map { $$_ = "null" if (!defined $$_); } @list_of_refs_to_vars_to_bind;
to do your evil thing.

Replies are listed 'Best First'.
Re^2: check bind_columns for undefined values
by Anonymous Monk on Feb 12, 2013 at 00:35 UTC
    Hi, Thanks for the Map idea, I'm new to perl (but not other similar languages).
    Can someone explain why the example:

    map { $$_ = "null" if (!defined $$_); } @list_of_refs_to_vars_to_bind;

    ...uses $$_ when I would expect it to use $_ - i've googled round and round but haven't found an explanation yet.

    many thanks
    jonathan
      A decent tut on reference/dereference -- such as those found in Tutorials right here in the Monastery -- should make the answer clear.

      If you didn't program your executable by toggling in binary, it wasn't really programming!