カレッヂ |
質問者 くら
投稿日 6/20(金) 20:24:37
$in{'WORD'}に、「ー」の文字が含まれていると 下記のコードがエラーします。 $Word = $in{'WORD'}; @Find_Word_U = grep /$Word/, @DB_Data; ためしに、このように書くと、文法エラーになります。 @Find_Word_U = grep /ー/, @DB_Data; どうしたらよいのでしょうか。 よろしくお願いします。
プロバイダ参照:http://www.fsv.jp/ |
回答者 しあわせのツボ
[削除]
投稿日 6/20(金) 21:17:41
see log: http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20030618174253.shtml |
質問者 くら
[削除]
投稿日 6/20(金) 21:24:25
これを書かないほうがよかったですね。 > @Find_Word_U = grep /ー/, @DB_Data; やりたいことは、 @Find_Word = grep /コンピュータ/, @DB_Data; で、@Find_Wordを表示したいのです。 「ー」を「-」に変換すると、表示時事に「-」を「ー」に戻す必要が発生しますが、 「-」のまま出なければならない文字も「ー」になってしまいます。 そのため、直接、Grepで取り出したいと考えた次第です。 説明不足ですみません。 |
質問者 くら
[削除]
投稿日 6/20(金) 21:25:28
「コンピュータ」は、あくまでも一例です。 たびたび、すみません。 |
回答者 しあわせのツボ
[削除]
投稿日 6/20(金) 23:04:57
正規表現中で「ー」を使うための例を挙げたのですが。 /コンピュ\x81\x5bタ/ じゃだめですか、ということです。 もし「変数に任意の文字列があり、それでgrepしたい」のであれば、 quotemeta関数を調べてください。 |
回答者 おっさん
[削除]
投稿日 6/20(金) 23:26:46
簡単な確認スクリプトを試して見てください。 require 'jcode.pl'; @DB_Data_sjis = ('コンピュータのコンピュータ','コミュニケーション','クーラー'); @DB_Data_euc = (); foreach $data (@DB_Data_sjis) { &jcode'convert(*data,'euc'); push (@DB_Data_euc, $data); } $in{'WORD'} = "ー"; $Word = $in{'WORD'}; &jcode'convert(*Word,'euc'); @Find_Word_U = grep /$Word/, @DB_Data_euc; foreach $data(@Find_Word_U) { &jcode'convert(*data,'sjis'); print "$data\n"; } 文字コードをEUCに変換すれば、解決できると思いますよ。 |
質問者 くら
[削除]
投稿日 6/21(土) 15:39:10
しあわせのツボさん、おっさんさん(?)、ありがとうございます。 quotemeta関数で何とかなりそうです。 でも、麻薬みたいな関数ですね。不用意に使用すると、 あとでとんでもない、しっぺ返しをうけそうです。(^^) 文字コードをEUCに変換しても、よかったのですね。 煮詰まっていると、そんなことさえ、考えが及ばなくなってしまいます。 とにかく、quotemeta関数かEUC変換で、対応できそうです。 中途半端な質問で、ご迷惑かけましたが、お付き合いいただき ありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |