検索するチェックボックスの配列データに、全て一致するデータを、
データファイルから取り出すコードで以下のようなエラーメッセージが
出ました。
どこが悪いのかわかりません、教えてください。
コード:
if (@setubi_o){
my $count=0;
for($i=0;$i<$#setubi_o+1;$i++){
if($setubi=~ /$setubi_o[$i]/ ){$count++;}else{next;}
}
if($count==$#setubi+1){;}else{next;}
}
エラーメッセージ(KCatch.pm)
[estate.cgi:445:die] /シャワー/: unmatched [] in regexp.
>if($setubi=~ /$setubi_o[$i]/ ){$count++;}else{next;}
No.1ベストアンサー
- 回答日時:
これは $setubi_o[$i] に入っている文字列の文字コードが、シフトJISであるために起こる問題です。
シャワーの「ー」という字のシフトJISコードは 0x81 0x5B です。
2バイト目の 0x5B は「 [ 」という文字で、これは正規表現のメタ文字でもあります。
このため [ に対する ] がないとして、エラーが起きてしまうのです。
これを回避するためには、
if($setubi=~ /$setubi_o[$i]/ ){・・・
の行を、
my $tmp = quotemeta($setubi_o[$i]);
if($setubi=~ /$tmp/ ){・・・
のように、quotemeta関数を通した値でマッチさせるようにしてください。
※quotemeta は、文字列中のメタ文字をエスケープ(前に \ を付ける)して返す関数です。
ちなみに、同じような効果を持つ \Q~\E を使って
if($setubi=~ /\Q$setubi_o[$i]\E/ ){・・・
として回避する方法もありますが、他の文字で問題が起こる可能性があるので、利用しない方がよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング HSPの変数につ...
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
Excel VBAでPDFファイルをMicro...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
EXCELからCSVにすると余計なカ...
-
正規表現で、特定の文字列を含...
-
CString Format にて全角空白文...
-
住宅にカナを入力する際に丁目...
-
テキストボックスの文字列を置...
-
Accessのテキストボックスの入...
-
Accessで日付や数値を全角で表...
-
COBOLでの全角文字の判定をした...
-
VB.net、テキストボックス入力...
-
Word2007の全角文字、全角スペ...
-
Delphi6 Delimiterの使い方
-
エクセルで数値を全角文字(カ...
-
封筒の宛先で縦書きの書き方
-
VBA 置換文字がみつからない時
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パイソンエラーについて
-
Malformed UTF-8 character
-
Perlで Right関数に近い処理を...
-
splitの逆の処理
-
GDBでデバッグするとき文字列の...
-
数字を文字列に変換し短縮化する
-
文字列と数字を含むセルから数...
-
日本語文字列の指定長(byte)切出し
-
メールヘッダのMIMEエンコード...
-
Perl(Windows)の文法について
-
プログラミング HSPの変数につ...
-
VBA like演算子について
-
Perl/Tk使用時のUTF-8コード文...
-
perlを使用しての特定行抽出に...
-
perlでのURL判定
-
perlで文字列を短く(圧縮)し...
-
cryptの使用方法
-
外部ファイルに「漢字(かんじ...
-
リストデータの検索でのエラー...
-
文字列操作:最後の4文字を取...
おすすめ情報