miau's blog?

| 1 |

2004年 4月 07日 (水曜日)

ActivePerl + 日本語

- Perl on miau's blog?
ActivePerl の正規表現周りで日本語使うとうまく処理できないことがある。
"ー" のように2バイト目が "[" になっているものなんかがそうで。

Perl-5.8 MEMO - 日本語を含むスクリプトを書く

に対応策が載っていたけど。やってみるとアプリケーションが落ちたり。

jperlですな

こういうことやんないとだめですか?
16:13:20 - miau - No comments - No Trackbacks - Permalink

2004年 4月 15日 (木曜日)

ActivePerl + 日本語

- Perl on miau's blog?
先日は結局解決しなかったので、再度調べてみる。

要件としては
・Shift-JIS のファイルを 入力/出力したい
・Perl スクリプト自体は Shift-JIS が望ましいが、無理なら EUC でも UTF-8 でも構わない
という状態で。

とりあえずスクリプトに "ー" が含まれるような場合に正しく動作させたければスクリプトを EUC か UTF-8 にすれば良いらしい。
さて、この状態で Shift-JIS が扱えるかだ。

Shift-JISテキストを正しく扱う

ああ。Jcode.pm とかで変換かければいいのかな。ということで、

Jcode.pmをWindows 2000でコンパイルする

から Jcode.pm を DL してさくっと導入。


# shift-jis 対策
use jcode;

open IN, "<$filename" or die $!;
@lines = ;
close IN;

foreach $line (@lines){
Jcode::convert(\$line, "euc");
}

open OUT, ">$filename.euc" or die $!;
print OUT @lines;
close OUT;

# 本処理
use encoding "euc-jp";

とかやってみるけど、やっぱりうまくいかない。

Perl 5.8 Documentation - perljp - 日本語 Perl ガイド

見て、
open (IN, "<:encoding(shiftjis)", "$filename");

とかできそうな気がして実験。失敗。

・・・と思いきや、ただのコーディングミスと判明。
最後に書いた方法でよさげ。
22:03:04 - miau - No comments - No Trackbacks - Permalink
| 1 |