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/