• ベストアンサー

文字チェックについて

いつもお世話になっております。 Perlの処理で分からない事がありますので、 ご存知の方がおられましたら、 アドバイスを頂けますでしょうか。 (質問内容) 以下のIFがあるのですが、何のチェックを実施しているか分かりません。 何のチェックを行っているか教えて頂けますでしょうか。 if($lvalue =~ /[^\x81-\x9F\xE0-\xFC]\\[^\\]/){ 処理1 } 以上です。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • g_liar
  • ベストアンサー率52% (382/728)
回答No.2

if文自体は正規表現によるパターンマッチングです。 http://www.komonet.ne.jp/~perl/chap7.htm \x81~\x9Fおよび\xE0~\xFCはShift_JIS漢字コード(2バイトで1文字)における1バイト目の文字コードの範囲です。 範囲指定の先頭が [^ ですのでShift_JISの1バイト目でない文字・・・つまり漢字コードの2バイト目かまたは英数字にマッチします。 その次にくる\\[^\\]は、perlで¥自身を表すには\\と表記しますので、¥が1コあって¥以外の文字に続くことを意味します。 「処理1」の部分がわからないとハッキリしたことは言えませんが、$lvalueに入っている文字列がWindows(またはMS-DOS)でのディレクトリ名として正しいか判定している文ではないでしょうか?

hanto123
質問者

お礼

ありがとうございます。 \x81-\x9F\xE0-\xFCの部分の意味が分からなかったので 助かりました。

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

そのあたりの文字コードなら、Shift_JISの2バイト文字を探しているのかな?  正規表現のコードを解析するより、処理1の内容を見たほうが何をしてるかわかると思いますけど・・・・?

関連するQ&A