ひとつのFormに二つ以上のsubmitがある場合の処理
自分としては
<input type="submit" name="submit1" value="一つ目の機能"> <input type="submit" name="submit2" value="二つ目の機能">
という形で書くのが筋だと思っています。
<input type="submit" name="submit" value="一つ目の機能"> <input type="submit" name="submit" value="二つ目の機能">
この形でもいいっちゃいいわけですが、これをやるとname="submit"で受け取った値が日本語になるため、文字コードが保証できなくなるケースが多いかなと。
ちょっと手抜きでCGI.pmな書き方をすると後者は
use CGI; my $q = new CGI; my $func = $q->param("submit"); if($func eq '一つ目の機能'){ &func1; #func1の実行 } else if ($func eq '二つ目の機能') { &func2; #func2の実行 } # 残り例外処理など...
とかけますね。でも、
use CGI; my $q = new CGI; if(defined ($q->param("func1")){ &func1; #func1の実行 } else if(defined ($q->param("func2")){ &func2; #func2の実行 } # 残り例外処理など...
これならソース内に日本語を使わなくてOKでしょう。
時に、ボタンが3つ以上あったら、どうしましょう。
思ったんだけどdefined使うよりはexists使ったほうがいいかも