• 締切済み

perlでの正規表現?文字コードの問題?

なぜ、全角Bがマッチするのでしょか? $sh ="B111\"; print "$sh\n\"; if($sh=~ /\A[あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と,な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む,め,も,や,ゆ,よ,わ,ゐ,ゑ,を,ん,ぁ,ぃ,ぅ,ぇ,ぉ,ゃ,ゅ,ょ,が,ぎ,ぐ,げ,ご,ざ,じ,ず,ぜ,ぞ,だ,ぢ,づ,で,ど,ば,び,ぶ,べ,ぼ,ぱ,ぴ,ぷ,ぺ,ぽ]/){ print "ヒット\n\"; } print "処理終了\n\";

みんなの回答

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

身も蓋もない書き方をすればスクリプトが間違っているからです。 無用なカンマを別にして、なんの指定も前処理もなしにそのように 書いて期待通りにマッチするのは大昔のjperlくらいです。 Encode::decode を使うなどして、マルチバイト文字が バイトの並びでなく文字として認識されるようにしてください。

関連するQ&A