-PR-
締切り
済み

cgi-libを使って変数値渡しをしたいのですが

  • すぐに回答を!
  • 質問No.7445617
  • 閲覧数184
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (37/57)

cgi間の変数渡しの質問をしたのですが、うまくいかなかったので、調べてみると、
cgi-lib.pl'を使うことで簡単に値を渡せるということが分かりました。
ですが、

use lib '/home/www';
require 'cgi-lib.pl';# cgi-lib.plを呼び出す
$test=1000;

# 変数値渡し?
form_input_post.cgi?name=$test;
&ReadParse(*in);

として、$testの値をform_input_post.cgiに渡そうとしたのですが。

コンパイルエラーが出てしまいました。
Can't modify constant item in scalar assignment at form_input_post.cgi line 49,
near "$test;"
syntax error at form_input_post.cgi line 49, near "$test;"
form_input_post.cgi had compilation errors.
というエラーです。

初歩的なミスな気がしますが原因がわからないので教えて頂きたいです。
よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 55% (1857/3366)

そりゃ出るでしょ。 ブラウザでのURLと、CGIでの実際の動作がごっちゃになってます。 form_input_post.cgi がCGIのプログラムだとして Perlのスクリプトにプログラムを直接書いても実行できません。 これは、Perlスクリプト中に ls だの cat だの書くのと同じことです。 パラメータを"?name=$test;"みたいには渡せません。CGIには、サーバ ...続きを読む
そりゃ出るでしょ。
ブラウザでのURLと、CGIでの実際の動作がごっちゃになってます。

form_input_post.cgi がCGIのプログラムだとして

Perlのスクリプトにプログラムを直接書いても実行できません。
これは、Perlスクリプト中に ls だの cat だの書くのと同じことです。

パラメータを"?name=$test;"みたいには渡せません。CGIには、サーバーがこれを解釈してGETまたはPOSTの仕様に合せた方法で渡します。(GET方式なら環境変数QUERY_STRINGに入れるとか)



http://oshiete.goo.ne.jp/qa/7439086.html
の続きですよね?

送信側は正しいですか?たとえば#3のコードを使って、ブラウザで表示させて、そのソースを確認したら
<input type="hidden" name="key0" value="$array1[0]の内容">
という感じになってますか?
<input type="hidden" name="key0" value="">
とかなってないですか?

CONTENT_LENGTH が0なら、そもそものデータが送られてない、ってことになります。
文字列相当の値になってますか?

getにしたらどうですか?

自作ルーチンではなく、cgi-lib.plで読むようにしたらどうですか?
お礼コメント
kmwrod

お礼率 64% (37/57)

返信ありがとうございます。
返信内容を参考に、もう少し勉強してみます。
投稿日時 - 2012-04-30 10:19:07
  • 回答No.2
レベル14

ベストアンサー率 44% (1016/2281)

前の質問の流れを見ての推測ですが、 HTMLの<form>って何ですか?ではないでしょうか? もしそうなら、CGI、Perlの前に、HTML(とくにform関連)はどういうものかというのを勉強したほうがいいんじゃないかと思います。 (ブラウザの処理)formを送信 -> (サーバー(CGI,perl)の処理)HTMLを出力 -> (ブラウザの処理)<form actio ...続きを読む
前の質問の流れを見ての推測ですが、
HTMLの<form>って何ですか?ではないでしょうか?
もしそうなら、CGI、Perlの前に、HTML(とくにform関連)はどういうものかというのを勉強したほうがいいんじゃないかと思います。

(ブラウザの処理)formを送信
-> (サーバー(CGI,perl)の処理)HTMLを出力
-> (ブラウザの処理)<form action="form_input_post.cgi">を送信
-> (サーバー(CGI,perl)の処理) form_input_post.cgiを実行

という流れになると思います。


>前質問
<meta>でrefreshしてるようですが、送信した内容が表示されないというのはそれじゃないですか?


--------------
以下、全くの余談。

/.J に聞け: プログラミングに関する質問はどこに寄せれば良い?
http://developers.slashdot.jp/story/12/04/26/0132206/
中程の回答
>Re:回答者の無意味な質問返しが超大嫌い。
それを承知で、こういう回答の仕方をしていますので、悪しからずご了承ください。
補足コメント
kmwrod

お礼率 64% (37/57)

><meta>でrefreshしてるようですが、送信した内容が表示されないというのはそれじゃないですか?

refreshを消してみましたがダメでした。
投稿日時 - 2012-04-30 14:38:46
お礼コメント
kmwrod

お礼率 64% (37/57)

返信ありがとうございます。
まだ、htmlもあまりよくわかっていない状態で、cgiを組むことになってしまっているので、こんなプログラムになっています。

頑張ります・・・
投稿日時 - 2012-04-30 10:20:30
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ