• ベストアンサー

この意味を教えて下さい。

よく、CGIを見ていると始めのほうにこのような行があるのですが、 これはどうゆう意味があるのでしょうか? if ($FORM{'mode'} eq 'view') { &view;exit; } elsif ($FORM{'mode'} eq 'delete') { &delete; } elsif ($FORM{'mode'} eq 'input') { &input; } また、「$FORM{'mode'} 」の意味も教えていただきたいのですが・・・。 よろしくお願いします。

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

  • ベストアンサー
noname#24096
noname#24096
回答No.2

下記のような感じではないかと思います。 >if ($FORM{'mode'} eq 'view') { &view;exit; } もし、$FORMという連想配列のmodeの値が「view」ならviewサブルーチンを実行してexit >elsif ($FORM{'mode'} eq 'delete') { &delete; } あるいは、$FORMという連想配列のmodeの値が「delete」ならdeleteサブルーチンを実行 >elsif ($FORM{'mode'} eq 'input') { &input; } あるいは、$FORMという連想配列のmodeの値が「input」ならinputサブルーチンを実行 恐らく、スクリプトのどこかに sub view{…} sub delete{…} sub input{…} という部分があるはずです。 &viewでsub view{…}を &deleteでsub delete{…}を &inputでsub input{…}を それぞれ呼び出しているということです。 このsub xxx{…}の部分の処理がサブルーチンです。

OUHO
質問者

お礼

分かりやすく本当にありがとうございます。 とても参考になりました。

その他の回答 (1)

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

>$FORM{'mode'} これは連想配列と言います。 通常、配列というと、a(0),a(1),…,a(n)というように配列の添字には数値を指定します。 連想配列というのは、配列変数の添字に文字を指定してより直感的に配列変数が使えるようになります。 CGIフォームで入力項目が複数ある場合(例:カレンダー) # デコード(GETメソッドで指定された年月を受け取るためのもの) #パラメータ:y=年,m=月,d=日 local($Query_String) = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$Query_String); foreach $pair (@pairs) {   ($name, $value) = split(/=/, $pair);   $value =~ tr/+/ /;   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;   $QUERY{$name} = $value; } この場合ですと$QUERY{'y'},$QUERY{(m'},$QUERY{'d'}にそれぞれ年月日が入ります。

OUHO
質問者

お礼

本当にありがとうございます。