В массиве @news - 3 записи...
Почему в результате работы функции остается только первая?
Сбой в конструкции  return @news;
sub BlockSub
{
 $sth = $dbh->prepare(qq{ SELECT text FROM news ORDER BY date DESC LIMIT 0 , 3});
 $sth->execute();
 while (my ($text) = $sth->fetchrow_array())
  {
    push(@news,$text);
  };
 $sth->finish();
 return @news;
};