質問: チャットのログにある特定の文字にリンクを貼りたいと思っています。 たとえば『マイクロソフト』『アップルコンピュータ』『IBM』というキーワードを前もってデータファイルにURLと共に登録しておいて、ログにそれらのキーワードが出てきたらそれらのサイトへのリンクタグをつけます。 で、以下のようなプログラムで置換を行うと決まって『ー』という文字の含まれるキーワード(たとえばアップルコンピュータ)を置換するときにエラーになります。 \のエスケープ文字をつければいいと言うものでもなく、正規表現の問題というだけでどうすればいいのか全く分かりません。また、他の文字でも起こり得ることなのかも分かっていません。アドバイスよろしくお願いします。 Apacheのエラーログ [Tue Oct 23 16:16:54 2001] [error] [client 127.0.0.1] Unmatched [ before HERE mark in regex m/アップルコンピュー << HERE タ/ at d:\PROGRA~1\APACHE~1\APACHE\CGI-BIN\CHAT\CHATPOST.CGI line 216. ***置換部分の一行*** $CHAT{Message} =~ s/$FILE{Keyword}/$FILE{Keyword}\*<\/font><\/a>/g;
回答: ひょっとして、データを Sjift_JIS で記述していませんか? ならば、「ー」だけでなく「表」などもアウトだと思うのですが。(いわゆる、二バイト目があたるという問題です。) JPerl など、日本語対応の perl 以外なら、EUC で保存するほうがよいかもしれません。 文字化けが心配なら、 Content-type: text/html; charset=EUC-JP とすれば、「まず」文字化けはしないと思います。