Doesn't look too bad. A few comments tho. The process will suffer mem issues if the db is large, since you're reading the whole thing into memory, tho i can't think of a particular way around that to get the reverse you want.
Also, there's no real reason to play with @_ and $_.. You can just as easily assign any array variable here, and @_/$_ can sometimes be a bad things to play with due to their magical nature.
also, your last foreach may be more readable if you didn't use double quotes to surround it.. there's a few things you can use here.. one of them is the qq() variant of quotes.. Personally i'd probably do:
foreach $hash (reverse @all_array) {
print <<HTML;
<table width="100%" border="1" cellspacing="0" cellpadding="3">
<tr>
<td><font color="orange"><b>$hash->{'TITLE'}</b></font><br><font s
+ize="1">Posted - $hash->{'DATE'}</font></td>
</tr>
<tr>
<td>$hash->{'COMMENTS'} (<a href="$hash->{'URL'}" target="_blank">
+more information</a>)</td>
</tr>
</table><br>
HTML
}
-Syn0