CGIにパラメータを2つ渡すには?

[上に] [前に] [次に]
マロン 1999/09/16(木) 02:51:16
CGIにNAME=VALUEの組み合わせで2つパラメータを
渡したいと思い、以下のように記述しました。

sub afterr {
    print "Content-type: text/html\n\n";
  print "<html><head></head>\n";
    print "<frameset rows=\"72%,*\"BORDERCOLOR=\"pink\">\n";
#   print "<frame src=\"hisenter.cgi?mode=enter+errcom=$comment target=\"_self\" name=\"top_w\">\n";
    print "<frame src=\"hisenter.cgi?mode=enter target=\"_self\" name=\"top_w\">\n";
    print "<frame src=\"hisdsp.cgi\" name=\"down\" marginwidth=4 marginheight=4>\n";
    print "</frameset>\n";
    print "</html>\n";
}

このままmode=enterで実行するときちんと処理を行うのですが、この行をコメントにして
print "<frame src=\"hisenter.cgi?mode=enter+errcom=$comment target=\"_self\" name=\"top_w\">\n";
のコメントをはずすと「ドキュメントにデータが含まれていない」というエラーが出ます。
$commentの中に実際に渡したい値が入っています。

どう直せば良いか教えていただけないでしょうか。

B-Cus 1999/09/16(木) 02:58:58
> ?mode=enter+errcom=$comment
?mode=enter&errcom=$comment ってことかね。

ところで
 「こーゆー読みにくい書き方はやめて、
   print <<END
   <frame src="hisenter.cgi?mode=enter+errcom=$comment target="_self" name="top_w">
   END
  とか、
   print qq{<frame src="hisenter.cgi?mode=enter+errcom=$comment target="_self" name="top_w">\n}
  などと書こう!」
という運動に賛同していただけません?

1999/09/16(木) 03:14:05
関係ないのかも知れませんが
src=\"hisenter.cgi?mode=enter+errcom=$comment\"
としないのはなぜ?(")ね。
あとデリミタが+なのは何故ですか?
単純に&amp;にすればいいのに・・・。
デコードするときにスペースになるとかいう問題は考えられない?
どれも処理場の都合でしたらすいません。

マロン 1999/09/16(木) 16:44:13
[[解決]]
ありがとうございました。

確かに読みにくいですね。

src=の後の¥”、付け忘れました。

で、&ですが、デリミタ&でデコードしているにもかかわらず、
なぜか「コマンドライン引数で渡すときは
          http://...../cgi-bin/xxx.cgi?引数1+引数2」
という記述を見て、区切りを+にしなければならない、と思い込みました。

どうもあせりすぎていたようです。
ありがとうございました。

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