• ベストアンサー

変数値に付いて

数日前からCGIの勉強を始めた素人です。ご教授,よろしくお願いします。 実際のプログラムを見ながらのほうが覚えるだろうと思い、フリーのスクリプトをダウンロードしてきてそれを見ながら勉強しています。 で、つまずきました。 if ($FORM{'action'} eq 'regist') {&regist;} elsif ($FORM('action') eq 'remove') {&remove;} else {&html;} sub html{   if ($FORM{'action'} eq 'remove') { … 1行目で三つに場合分けしているんですよね? で、subはremoveではないとき。 なのにまたその関数の定義の中で、removeがでてくる。 どういうことなのでしょう? 教えてください。 お願いします。   

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

if ~else の処理の分岐は action というキーに対して regist (登録)、remove(削除)という処理を行い、どれも該当しない場合は html 処理を行う。ということですよね。 ここで、htmlの処理内容を見てみると、想像するに HTMLを吐き出す処理と思われます。regist / remove処理のあとに html処理を使って HTMLを吐き出す処理をする、と言うのはイレギュラーなものとは感じません。 また、html処理の中で再度 actionにより処理を分けているのは、前の if ~ elseで処理を分けたものとは意味が異なります。html処理で HTMLを吐き出す場合に remove(削除)処理だけは特別なことをしたい、ということは良くあることです。 プログラム全体が見えないので想像で書いていますが、そんな感じではないでしょうか。

noname#3339
質問者

お礼

>html処理の中で再度 actionにより処理を分けているのは、前の if ~ elseで処>理を分けたものとは意味が異なります。 まだまだ漠然としていますが,なんとなくわかってきたような気がします。 "そういうものなのか"、ぐらいの理解ですけど。 とりあえず前進してみます。 これからもよろしくお願いします。 勉強します。

その他の回答 (1)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

htmlというサブルーチンは、ほかのところで呼び出されていませんか? 汎用性を持たせるために、こうなっているのでしょう。

noname#3339
質問者

補足

さっそくのご回答ありがとうございます。 >htmlというサブルーチンは、ほかのところで呼び出されていませんか? >汎用性を持たせるために、こうなっているのでしょう。 検索したら、後のほうでも使われていました。 ただ分からないのは、結局、最初に出てくるremoveと、&html内のは違うものなのか、同じ物なのか、ということなんです。 同じ物だとするとなんだか矛盾を感じますし、(removeでなかったら&htmlへ、ですよね?) 違うものだとすると、プログラム内で両者が混同される事がないのか。 不思議です。 よろしくお願いします。

関連するQ&A