プロが教えるわが家の防犯対策術!

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;

A 回答 (2件)

charsetをShift_JISとしていることから十中八九ShiftJIS使ってるからということだと思いますが、


CGIでいきなり動かさないでコマンドラインで試してみるか、ログを見ればすぐに判断つくような問題ではないですか?


Unmatched [ in regex; marked by <-- HERE in m/ラー <-- HERE メン/ at okw.pl line
5.

あるいはエラーメッセージをブラウザ画面に出るようにしとくとか。
    • good
    • 0
この回答へのお礼

古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する)

であっさり解決でした。ありがとうございます。

お礼日時:2008/10/31 17:56

文字コードの問題?

    • good
    • 0
この回答へのお礼

古典的な対策としては「@aaa = grep /\Qラーメン\E/ , @aaa;」と\Q\Eで囲む(quotemetaを利用する)

であっさり解決でした。ありがとうございます。

お礼日時:2008/10/31 17:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!