or download this
$rv = $sth->rows;
Returns the number of rows affected by the last row affecting comm
+and, or -1 if the number of rows is not known or not available.
...
For SELECT statements, it is generally not possible to know how ma
+ny rows will be returned except by fetching them all. Some drivers wi
+ll return the number of rows the application has fetched so far, but
+others may return -1 until all rows have been fetched. So use of the
+rows method or $DBI::rows with SELECT statements is not recommended.
One alternative method to get a row count for a SELECT is to execu
+te a "SELECT COUNT(*) FROM ..." SQL statement with the same "..." as
+your query and then fetch the row count from that.