数字チェックができません。

[上に] [前に] [次に]
cat 2000/06/06(火) 14:58:03
数字チェックをしたく、下記のようにやりました。

            if($key eq "suryou")
{
if($value =~ /^\d+$/)
{

}else{
                              print "location: /ng.htm\n\n";
      last EXIT;
                        }
                }
                print "location: /ok.htm\n\n";

"suryou"が数字じゃなかったらngの画面を表示したいのですが、
数字でも数字じゃなくてもokの画面を表示してしまいます。
上の方法では間違ってますか?

オオカミ 2000/06/06(火) 15:09:42

if($key eq "suryou")
{
    if($value =~ /^\d+$/)
    {
        print "location: /ok.htm\n\n";
        exit;
    }
}
print "location: /ng.htm\n\n";

cat 2000/06/06(火) 16:00:48
オオカミさんありがとうございます。
実は"suryou"ひとつだけじゃなく、下にあと何個かまだチェック
してるものがあります。

EXIT:
while(($key,$value)=each(%dataDict))
{

  if($key eq "suryou")
  {
if($value =~ /^\d+$/)
{

}else{
              print "location: /ng.htm\n\n";
              last EXIT;
        }
  }

  if($key eq "nen")
  {
if($value)
{

}else{
               print "location: /ng.htm\n\n";
               last EXIT;
  }
 ・
 ・
 ・
print "location: /ok.htm\n\n";
}
何回もチェックかける場合はオオカミさんが書いてくださった方法
ではマズイですよね?

オオカミ 2000/06/06(火) 16:11:21
$flag = 0;
while (($key,$value) = each(%dataDict))
{
    if($key eq "suryou" && $value =~ /[^0-9]/)
    {
        $flag++;
        last;
    }
    if($key eq "nen" && $value =~ /[^0-9]/)
    {
        $flag++;
        last;
    }
    if($key eq "gatsu" && $value =~ /[^0-9]/)
    {
        $flag++;
        last;
    }
    if($key eq "nichi" && $value =~ /[^0-9]/)
    {
        $flag++;
        last;
    }
}
if ($flag)
{
    print "location: /ng.htm\n\n";
} else {
    print "location: /ok.htm\n\n";
}

2000/06/06(火) 16:14:41
取りあえず、ソースはちゃんとインデントして下さい。非常に見辛いです。
あと、lastがあるなら、はじめからwhileをちゃんと書いてくれないと何がなんだかわかりませんよ。
それから、locationヘッダは絶対URIじゃないとまずかったような気がします。
それと、何度もlocationをかけているように見えますが、まずいのでは?
まあ、よくわからないのですが、チェック部分は
if($key eq "suryou"){
  unless($value){
    print "location: ng.html\n\n";
    next;
  }
}
でいいんじゃないでしょうか?
どうも、全体としてどういう処理をしているのかよくわからないのがアレですが。

2000/06/06(火) 16:15:45
ちょっと間違えた。(しかも、先越されてるし)
まあいいか。

[上に] [前に] [次に]