• ベストアンサー

Perlで半角英数字以外の入力を拒否するには

全く想像がつかないので、ご回答お願いいたします。 現在Perlで簡単なプログラムを作成しているのですが、全角で何かを入力するとプログラムがフリーズしてしまいます。これを防ぐために、半角の英数字以外の入力をシャットアウトしたいのですが、その判定をするにはどういうプログラムを入れればよいでしょうか。 データはPOSTで送っており、運用上、全角文字だけでなく、できれば半角カナも排除したいのですが……。 よろしくお願いいたします。

  • Perl
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • feininger
  • ベストアンサー率41% (74/180)
回答No.1

$strに半角英数字以外の文字が含まれたらexitするコードはこんな感じです。 改行もスペースも@なんかもexitされますのでご注意。 if ($str =~ /[^0-9A-Za-z]/) {exit;} ただ、フリーズするということはどこかに地雷が眠っているということでもあるので、これを機会にどこでフリーズしているかは調べておいたほうが良いですよ。地雷を踏ませないようにするよりも、地雷そのものを処置したほうが安心ですし。

Wingard
質問者

お礼

ありがとうございました、おかげでうまくいきました^^ フリーズについてですが、友達がデバッグしてくれてたので詳しいことがわからなかったのですが、よく調べてみるとフリーズはしていないことがわかりましたので、これに関しても問題はなさそうです。 本当にありがとうございました。

関連するQ&A

  • Excelの半角英数字の入力について

    Excelで、あるセル、又は行全体に入力するときに半角、全角の入力にかかわらず、入力したものは必ず半角に変わるようにするにはどうすればいいでしょうか? また、漢字かつ英数字の混合文字列に対して、英数字だけは、全角で入力しても半角に変えてくれるようにするにはどうすればいいでしょうか?

  • 突然、半角英数字が入力できなくなりました。

    テキストエディターを使ってると、いきなり半角英数字の入力ができなくなりました。入力切替すると半角英数字の直接入力のはずが半角カナ文字が直接入力D絵表示されます。ウィルスチェックは毎週してますし、今日もしたばかりです。どうか対策を教えてくださいお願いします。

  • 全角英数字のみ半角英数字にするには。

    VisualC++6.00 を使用しています。 ダイアログのエディットボックスで入力された文字を、 全角英数字のみ半角英数字にしたいのですが、 LCMapString だと、カタカナも半角になってしまいます。 英数字のみ半角にするには、どのようにすればいいでしょうか。 よろしくお願いします。

  • 半角英数字のみを受け付ける入力フォーム

    PHPで半角英数字文字のみを受け付ける入力フォームをつくりたいので教えてください。 JavaScriptではコピペで全角を受け付けてしまうので困っています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 「ひらがな→半角英数字」以外の入力切り替えのロック

    「ひらがな→半角英数字」以外の入力切り替えのロック  Phoenix001と申します。早速質問に入らせていただきます。  タイピングをしていて、誤って英語大文字やカナ文字しか入力出来ないモードにしてしまうことがあります。特にタイピングの練習をしていたり、急いで文章を打っている時ににこれが起こると調整にいちいち時間を取られます。  そこでお聞きしたいのですが、文字の切り替えを「ひらがな→半角英数字」のみしか出来ないように意図的に他の切り替え(全角カタカナ、英数、半角カタカナ、直接入力?など)をロックする方法はありませんか?(なお、直接入力に「?」を付けたのは、いまいち直接入力の有用性や意味が分からないからです)  あれば大助かりなのですが…………何か方法をご存じの方は是非ご享受下さい。  よろしくお願い致します。

  • Wordの英数字を半角で入力したい

    Wordで文章打っていると半角で入力できていた英数字がいつのまにか全角でしか入力できなくなってしまいました。半角入力に戻すにはどうしたらいいですか?

  • フォーム入力のチェック

    フォームの入力をCGI(Perl)でチェックするとき、 全角の漢字、カタカナ、ひらがなでの入力以外は禁止にしたいです。 どなたかいい方法をご存知でしょうか? とりあえず、現在は、 jcode.plで全角英数字⇒半角英数字に変換 フォームに入力された文字列を一文字(半角2文字)ずつ抽出して、 $a=~ s/([^\w ])/'%' . unpack("H2", $1)/eg; でエンコードしたものが%を含んでいるかどうかで判別してます。 でもこれだと全角英数字と半角英数字しかシャットアウトできません。 記号文字なども入力出来ないようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 半角カナは全角カナに、全角英数字は半角英数字に、一気に置換したい

    「半角カナは全角カナに、全角英数字は半角英数字に、一気に置換したい」と考えた時、同じ様な質問とそれに対する回答は沢山有るのですが、意外に満足出来るやり方が見つからず、大変困っています。 大きな制約条件(これが難題...)として、会社が管理するWindows機なので、使って良いのはWordとExcelだけだという問題が有ります(便利なユーティリティーソフトを見つけても、インストール出来ない)。WordとExcelのマクロは、辛うじて、使用可です。 WWWでWordでのマクロの作例を探し当て、これは良いかなと思ったら、小文字の全角英数字が全部大文字の半角英数字になってしまい、これは駄目でした。 また、Wordの「文字種の変換」を試用してみると、「半角」を指定してテキスト全体を選択して変換した場合、全角英数字が半角英数字になるのは良いのですが、全角カナが半角カナになってしまい、これも非常に不都合でした。 尚、主なターゲットは、ワークシートとかではなくて長文のテキストなので、色々な回答例で「Excelの関数を使えば良い」と書かれている説明を読むと、ちょっと不便だなと感じました。 Wordでのマクロで、完璧なものが有れば、OKなのだと思うのですが、自分には未だそれを作る能力が有りません(これを機に、勉強したいと思っています)。良い解決策や、マクロが有れば、是非お教え下さい。

  • キーボードで半角英数字が打てない

    キーボードのどのキーを押してしまったのか分かりませんが、 半角の英数字が打てなくなってしまいました。 代わりに半角のカタカナ小文字が表示されます。 例えば、「JAPAN」と打つと「マチセチミ」という具合です。 全角モードにすると正常に仮名漢字変換で全角文字が表示されます。 いま、この文章は全角モードで書いています。 FUJITSUのキーボードで種類は良く分かりません。 どうすれば元にもどるでしょうか?

  • かな入力でひらがなから英数字の切り替え

    かな入力に設定していて、ひらがなを打つ時と英数字の切り替えはキーボードの左上(Escの下)の半角/全角ボタンで 切り替えています。 それで英数字は(半角英数はabc)と(ABC)の使い分けは abcの時はシフト押さないでABCの時はシフト押しながらにしています。 そこで質問なのですが、複数の人が別の掲示板で >シフトキーを押しながら半角英数文字を打った後(決定前の下線がある状態)F9を押すと全角になる という書き込みをみたのですが、私のPCではなりません 1.どのように設定すればそうなるのですか? 2.かな入力の場合は一般的にはひらがなと英数字の切り替えはどのようにしていますか? 3.abcは半角英数字ですよね? ABCは全角英数字ですよね?  ABCは、どういうのですか? 半角大文字とでも  いうのですか? すみません、笑わずに教えて下さい。

専門家に質問してみよう