in reply to DBI confusion

I know this is entry very old but I have to correct. DBI execute() never returns 'E0E' but '0E0' which evaluates to 0 in int context and true in boolean context. DBI selectrow_arrayref() returns an reference to an array or undef.

In your 1st case:

$arrayRef is undef when an error occours => false
$arrayRef points to an empty list when no results are fetched => false
$arrayRef points to array with the first row of data. => true
You can use the // operator to check for undef. Like $arrayRef = $dbh->selectrow_arrayref($QUERY) // die "Error: " . $dbh->errstr;

In your 2nd case:

$result > 0 you got results. =>  true
$result == "0E0" No results - no error => true
$result == undef Error. => false
Some recommendations: