(バッドノウハウ) Perl 5.6 で use encoding を避ける

Perl でリソースを書きたいときのためのメモです。Perl 5.6 と 5.8 のそれぞれで扱いやすい文字列になります(5.6 ではバイト列、5.8 ではユニコードフラグが立った文字列)。子飼弾さんの Jcode の 5.6 と 5.8 でソースを切り替える方法を参考にしました。
5.6 のときに隠したいところを文字列にして、5.8 のときにだけ eval させます。use encoding はコンパイル時に実行しないとまずいので、BEGIN ブロック内で eval させないといけないことに気付くのに遅れ、小一時間悩んだのは内緒。

sub setup_japanese {
    BEGIN{ eval q{ use encoding 'utf8'; } if $] >= 5.008001; }
    $RESOURCE->{ja_JP} = {
        A => [qw(日 月 火 水 木 金 土)],
        B => [qw(睦月 如月 弥生 卯月 皐月 水無月 文月 葉月 長月 神無月 霜月 師走)],
        P => [qw(午前 午後)],
        Era => [qw(平成 1989 昭和 1926 大正 1912 明治 1868 西暦 1)],
        ...
    };
    BEGIN{ eval q{ no encoding; } if $] >= 5.008001; }
}