I get really tired of seeing SELECT * FROM foo. Who knows the hell you're getting? It's real fun having to get into MySQL every time and figure out what's in the table. SELECT * is for lazy programmers -- and not a good lazy. By explicitly naming the fields we get a host of benefits.
So why do I bring this up? Because of the following bug caused by SELECT *.
my $thing = $dbh->selectrow_hashref(q[
LEFT JOIN dead_things USING (thing)
WHERE things.thing = ?
], undef, $thing_num) or die "$thing_num not found\n";
See the bug? Had the fields been explicitly named instead of using an asterisk, this bug would not have occurred.