- ベストアンサー
変数値に付いて
数日前からCGIの勉強を始めた素人です。ご教授,よろしくお願いします。 実際のプログラムを見ながらのほうが覚えるだろうと思い、フリーのスクリプトをダウンロードしてきてそれを見ながら勉強しています。 で、つまずきました。 if ($FORM{'action'} eq 'regist') {®ist;} elsif ($FORM('action') eq 'remove') {&remove;} else {&html;} sub html{ if ($FORM{'action'} eq 'remove') { … 1行目で三つに場合分けしているんですよね? で、subはremoveではないとき。 なのにまたその関数の定義の中で、removeがでてくる。 どういうことなのでしょう? 教えてください。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
if ~else の処理の分岐は action というキーに対して regist (登録)、remove(削除)という処理を行い、どれも該当しない場合は html 処理を行う。ということですよね。 ここで、htmlの処理内容を見てみると、想像するに HTMLを吐き出す処理と思われます。regist / remove処理のあとに html処理を使って HTMLを吐き出す処理をする、と言うのはイレギュラーなものとは感じません。 また、html処理の中で再度 actionにより処理を分けているのは、前の if ~ elseで処理を分けたものとは意味が異なります。html処理で HTMLを吐き出す場合に remove(削除)処理だけは特別なことをしたい、ということは良くあることです。 プログラム全体が見えないので想像で書いていますが、そんな感じではないでしょうか。
その他の回答 (1)
- haporun
- ベストアンサー率40% (230/562)
htmlというサブルーチンは、ほかのところで呼び出されていませんか? 汎用性を持たせるために、こうなっているのでしょう。
補足
さっそくのご回答ありがとうございます。 >htmlというサブルーチンは、ほかのところで呼び出されていませんか? >汎用性を持たせるために、こうなっているのでしょう。 検索したら、後のほうでも使われていました。 ただ分からないのは、結局、最初に出てくるremoveと、&html内のは違うものなのか、同じ物なのか、ということなんです。 同じ物だとするとなんだか矛盾を感じますし、(removeでなかったら&htmlへ、ですよね?) 違うものだとすると、プログラム内で両者が混同される事がないのか。 不思議です。 よろしくお願いします。
お礼
>html処理の中で再度 actionにより処理を分けているのは、前の if ~ elseで処>理を分けたものとは意味が異なります。 まだまだ漠然としていますが,なんとなくわかってきたような気がします。 "そういうものなのか"、ぐらいの理解ですけど。 とりあえず前進してみます。 これからもよろしくお願いします。 勉強します。