Of error handling and calling selectrow_array in scalar context the DBI documentation says:
If any method fails, and "RaiseError" is not set, selectrow_array will return an empty list.
If called in a scalar context for a statement handle that has more than one column, it is undefined whether the driver will return the value of the first column or the last. So don't do that. Also, in a scalar context, an undef is returned if there are no more rows or if an error occurred. That undef can't be distinguished from an undef returned because the first field value was NULL. For these reasons you should exercise some caution if you use selectrow_array in a scalar context, or just don't do that.
Does any of that ring alarm bells? Maybe setting RaiseError will help if you haven't already?
Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond