サブルーチンリファレンス

しばらく前に書いたコードを眺めてたら、あまりにも変態的なのでちょっと晒しておきます。

my $prev_file = sub {
    (my $current = shift)--;
    return "$html_filename$current.html";
};
my $next_file = sub {
    (my $current = shift)++;
    return "$html_filename$current.html";
};
...
$PREV_FILE = $prev_file->($current_page);
$NEXT_FILE = $next_file->($current_page);

en passantでs/foo/bar/とかは結構見るけど、インクリメント・デクリメントするようなコードはあんまり見た記憶がないです。Best Practiceからはかけ離れてる。dankogai氏が見たら怒り狂いそうな気がしないでもないですが、書き直すのもいいアイデアがないので放置。

$PREV_FILE = "$html_filename@{[$current_page - 1]}.html";
$NEXT_FILE = "$html_filename@{[$current_page + 1]}.html";

なんてやるのとどっちもどっちだよねぇ… こういう場合のBest Practiceってどう書けばいいんだろう?