ソースファイルの文字コードがutf8だからといってuse utf8するのは違うらしい
毎回use utf8して、binmode(STDOUT, ":utf8")、binmode(STDIN, ":utf8");してたけど
そういうことじゃないのね。
use utf-8はほとんどの場合不要。 perlメモ
http://www.rengoku.sakura.ne.jp/program/perl/perl_utf8_001.html
じゃあ何のためにあるのかと言えば、perlの処理側に、これはUNICODE文字として処理するよと教えるだけの物です。
具体的に書くと、substr(文字分割)、length(文字の長さ取得)と言うような、UNICODEとマルチバイトで動作が変る関数群などに対して、 どちらの処理方法で処理するかを教えるのがutf8フラグとなります。
たとえばlengthの場合、フラグ無しだとバイト数が返ってきますが、utf8フラグONだと、文字数が返って来ます。
(中略)
なので、基本的には、文字列操作系の関数を使わない限り、utf8フラグは不要です。
単純にperlのソースコードをutf8で作成し、読み込む外部ファイル関係もすべてutf8で統一していれば、use utf8は記述する必要無く、そのcgiスクリプトはutf-8化したことになります。
use utf8が必要な場合。 perlメモ
http://www.rengoku.sakura.ne.jp/program/perl/perl_utf8_002.html
Perl で utf8 化けしたときにどうしたらいいか - blog.64p.org
http://blog.64p.org/entry/20080408/1207619640
PerlのCGIのutf-8改造で文字化けしたときの処方箋
http://mycc.s33.xrea.com/data/pc/perl_use_utf8.html
utf8 - ソースコード内に、UTF-8(か、UTF-EBCDIC)を有効/無効にするためのプラグマ - perldoc.jp
http://perldoc.jp/docs/perl/5.8.1/utf8.pod