総エントリー数が、一度に表示するエントリー数で割り切れる場合、最古のページが妙なことになるような。空ページが出力されないですか?

$pages = ($num_files / $blosxom::num_entries) + 1;

サブルーチンfilterのあたりかな。1足すとかじゃなくて、切り上げにすれば良いのか。

$pages = $num_files / $blosxom::num_entries;
$pages = int($pages + 1) unless $pages == int($pages);

と、変えてみる。

てか、最古のページで空エントリが出力されてる。エントリ無いのにstory出力しようとしてるっぽいですね。

return @sorted[$skip .. $num_files - 1];

サブルーチンsortのところをこう変えればいいみたい。配列の添え字は個数 - 1までなのでということあたりのお話かな。

とか、最古のページあたりをチェックしてたら、サブルーチンheadのところもバグらしきものを・・・。次へのリンクを生成するifステートメントが、

if (($page + 1) < $pages) {
...
}

と、なってるのですが、これだと最古のページの1つ手前で、次へのリンクが生成されなかったです。


if (($page + 1) <= $pages) {
...
}

こうだろ。どうよ!

正直、挙動を大幅に変えてたりするので、paginateでは問題ないのかもしれないですね(弱。