作者: Bruce.
日時: 2006/10/20(23:31)
Bruce.です。

さっそく use encoding のわなにはまってますね(^^;

Bunta さんは書きました (2006/10/20 19:46):

> use encoding 'shiftjis';
>  はどこに入れるのでしょう?
>  思いつく2通りはやったのですが、駄目です。
>  2通りとは、

とりあえずできるだけ前のほうということで

#!/usr/bin/perl
use strict;
use warnings;
use encoding 'cp932'

てなかんじで。

> 
> use encoding 'shiftjis';
> while (<>) {
> 
> while (<>) {
> use encoding 'shiftjis';
> 
>  なのですが。

んと、

perl script.pl file1 file2 file3...

てな感じで使うスクリプトであるということで良いですか?
であるなら

#!/usr/bin/perl
use strict;
use warnings;
use encoding 'cp932';

use open ':encoding(cp932)';
use open ":std";

while (<>) {
    print if /テーマ/;
    print if /一覧表/;
}

こんな感じで。cp932にしているのはWindowsで使う場合shiftjis (sjis)
よりも無難だからです。

use strict と use warnigns の行はなくてもOKですが、
つけたほうが多分デバッグで苦労しないですみます。

とりあえず参考になりそうなところを紹介しておきます。

Perl の多言語処理 -- Perl ヒント集 (ja)
http://www.fl.reitaku-u.ac.jp/~schiba/perl/perlEncoding.html

perl5.8のUnicodeサポート
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html

Perl-5.8 MEMO
http://namazu.org/~tsuchiya/perl/perl-5.8.html

Perl 5.8.x Unicode関連
http://www.pure.ne.jp/~learner/program/Perl_unicode.html

Perl5.8のドキュメント
http://www.kt.rim.or.jp/~kbk/perl-5.8/index.html

最後にもう一度警告(笑)
日記で紹介したこともありますが、2ちゃんねるの某スレでの発言です。

Perlコーディング初心者質問スレ Part 52 [bbs2chreader]
http://pc8.2ch.net/test/read.cgi/php/1158296511/200-

200 Name: nobodyさん [sage] Date: 2006/10/02(月) 19:46:10 ID: ??? Be:
   encoding って使うとまずのですか?

202 Name: nobodyさん [sage] Date: 2006/10/02(月) 21:02:26 ID: ??? Be:
   >>200
   まずくありません。よく知られた罠があり、使う場面を選ぶというだけで
す。しかしそのため、

   「よくわからないけれどとにかく動くようにしたい人」に勧めると、二日ほ
ど経ってから「今度は思わぬところがアッー!
で困っています」と泣き付かれるかもしれず、
   「プログラムやライブラリを配布して社会に貢献したい人」に勧めると、膨
大な数の配布先が use encoding の罠に汚染されてしまうかもしれず、
   「夢と希望と探究心に溢れた初心者」に勧めると、貴重な学習曲線の序盤で
つまらない無駄足を踏ませてしまうかもしれず、

   などの事情で大抵は勧めにくいということです。
   適切な使いどころがわからないなら使わないほうが無難でしょう。



-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
	web  www.kt.rim.or.jp/~kbk/index.html#zakkicho
	     homepage3.nifty.com/farstar/