What if () is valid? undef might be better off. i.e. a db error or data error might result in undef, where as if the subroutine runs to success, just there is no data, retunr undef.
Might be better to check for undef to see if an error occured? Just a thought.