- 締切済み
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;
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
charsetをShift_JISとしていることから十中八九ShiftJIS使ってるからということだと思いますが、 CGIでいきなり動かさないでコマンドラインで試してみるか、ログを見ればすぐに判断つくような問題ではないですか? Unmatched [ in regex; marked by <-- HERE in m/ラー <-- HERE メン/ at okw.pl line 5. あるいはエラーメッセージをブラウザ画面に出るようにしとくとか。
- Tacosan
- ベストアンサー率23% (3656/15482)
文字コードの問題?
お礼
古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する) であっさり解決でした。ありがとうございます。
お礼
古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する) であっさり解決でした。ありがとうございます。