ある、HTMLファイル(S-JIS形式保存)で、書かれたファイルが1000ファイルほどあり、その中に「ある単語」が存在するかどうかをマッチで調べています。
マッチはEUCでなければ、動作しないとの事なのでEUCにHTMLと「ある単語」を変換して比較をしています。
ここで、ある問題が起きました。
EUCに変換する際に、SJIS上の文字がEUCでは別の文字になってしまい、変な文字がひっかかってしまうのです。
そこで、SJISそのままでマッチをする方法はないか、質問致します。
環境は、
Windows XP SP2
Perl ver 5.8.8
です。
>マッチはEUCでなければ、動作しない
というのがどういうことなのかよくわかりませんが・・・
内部的にunicodeに変換してから両者を比較すればよいと思います。
http://www.fl.reitaku-u.ac.jp/~schiba/perl/perlEncoding.html
Perl 5.8 以降ではマルチバイトに対応していますから SJIS のままで記述、正規表現のマッチは出来ますよ。
スクリプトの最初の方で、
use encoding 'shiftjis';
とかやっておけば標準入力を SJIS として受け取ってくれます。
ファイルを open するときはこう。
open FILE, '<:encoding(shiftjis)', 'sample.txt';
ありがとうございます!
うまく行きそうです!
すいません、どこかのサイトだったとおもうのですが、「マッチの場合はEUCにする。」
と書いてあったので。
自分の勘違いでした。