• 締切済み

perl の grepで 全角カタカナで検索できません

perl の以下のソースで、実行エラーになってしまいます。 grep で全角カタカナで検索できないのです。半角カタカナでは、うまく動きました。 全角文字(たとえば’中華’)でも正しく「中華料理」と出力されます。 ’ラーメン’で検索したら、’ラーメン店’と出力されるのが正しいと思うのですが、 なぜ動かないんでしょ? ↓ソース #!/usr/bin/perl @aaa = ("ラーメン店","カレーハウス","中華料理"); @aaa = grep /ラーメン/ , @aaa; print "Content-type: text/html\n\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n"; print <<"HTML"; @aaa HTML exit;

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

charsetをShift_JISとしていることから十中八九ShiftJIS使ってるからということだと思いますが、 CGIでいきなり動かさないでコマンドラインで試してみるか、ログを見ればすぐに判断つくような問題ではないですか? Unmatched [ in regex; marked by <-- HERE in m/ラー <-- HERE メン/ at okw.pl line 5. あるいはエラーメッセージをブラウザ画面に出るようにしとくとか。

ruttey
質問者

お礼

古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する) であっさり解決でした。ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

文字コードの問題?

ruttey
質問者

お礼

古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する) であっさり解決でした。ありがとうございます。

関連するQ&A

専門家に質問してみよう