ふとしたことで、cgiからcgiを呼び出す必要に迫られてしまいました。そこで、呼び出す側はsystem()でやるとして、引数はどのように渡したらいいのでしょうか。
ブラウザでは、メソッド指定で呼び出せますが、コマンドラインでgetまたはpostで渡す方法というのはありますか?
/hoge.cgi?name=value
というのをPOSTでやりたくて、
$tmp = "name=value";
system("echo $tmp | perl hoge.cgi");
とか試して爆沈しました...(汗
No.1
- 回答日時:
やった事が無いのですが、考えられる方法だけ。
post形式で送るなら
system("perl hoge.cgi $tmp");
で行けないですかね?
get形式なら、
環境変数の「QUERY_STRING」に値を放り込んで、
後はcgiを呼べば良いと思うのですが...。
後、環境変数に「REQUEST_METHOD」に、GET形式かPOST形式かの種別を入れて置く方が良いのかも。
なるほど、環境変数というのをすっかり忘れていました。
また、どうやらcgiの呼び出し元と呼び出し先で全く同じルーチンを使って引数を読んでいたので、内容が上書きされてしまっていたようです。無事に解決しました。ありがとうございました。
No.2ベストアンサー
- 回答日時:
main.cgiというメインのCGIから
http://www.foo/fuga/cgi-bin/hoge.cgi?name=onamae …
を呼び出すという想定で、方法を2つほど御紹介します。
その1
引数をコマンドラインオプションとして渡す。具体的にはmain.cgiの中で
$name="onamae";
$id="1000";
system("perl hoge.cgi $name $id");
などとして呼び出します。hoge.cgiでは
$name = $ARGV[0];
$id = $ARGV[1];
とすればとりあえず引数を渡すことはできます。
その2
locationを使ってブラウザから呼び出させる。具体的にはmain.cgiの中で
$name="onamae";
$id="1000";
print "Location: http://www.foo/fuga/cgi-bin/hoge.cgi?name=${name}&id=$id\n\n";
としてやります。この場合ブラウザは
http://www.foo/fuga/cgi-bin/hoge.cgi?name=onamae …
の処理結果を表示しようとしますので、hoge.cgiがhtml出力をしないCGIだとmain.cgiを呼び出した段階でブラウザが止まってしまいます。
どちらもやったことはあるので経験者としておきます。私の場合は思い通りに動きました。
pythianさんの環境でうまくいくかどうかはわかりませんが。
コマンドラインから引数を渡したことが無かったので、ARGVで取り出せるのは初めて知りました。ブラウザが前提の設計でstdinから読ませていると、そのままではダメなんですね。
その2も大変参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTML化によるホームページの高...
-
バイナリファイルのアップロード
-
error_logファイルの中身で教え...
-
cgiとplとpm
-
フォームでインクリメント入力→...
-
jcode.plが読み込めない
-
週2回のペースって だいたい何...
-
アンケートなどの1日1回の投...
-
よくある 『 第○(1・2・3・4・...
-
月の第一週とは
-
エクセルで毎月第2週日の水曜日...
-
[C#]ListView一覧表示時の幅設...
-
毎○曜日って、使いますか?
-
土曜日の26時って何曜日の何時...
-
VBA。複数のChangeイベントをま...
-
指定曜日にMsgBox表示は可能で...
-
CGIの中で出力するテキスト内容...
-
ftpでのネットワークバイトオー...
-
社外からのアクセスかどうか判...
-
LOGON_USER
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jcode.plが読み込めない
-
バイナリファイルのアップロード
-
cgiとplとpm
-
Perlから他のcgiへPOSTでデータ...
-
htmlからテキストを返すperlを...
-
CGIの中にinclude
-
require文が実行できない
-
useとrequireでエラー
-
自CGIのURLのパス部分を取得す...
-
掲示板などのCGIでモード別機能...
-
gifcat.pl:助言お願い致します
-
Quantifier follows nothing in...
-
mt-check.cgiでForbiddenエラー...
-
perlのcgiで、変数の中身を表示...
-
コマンドラインでGET or POSTで...
-
perlのrequireの動き方について...
-
error_logファイルの中身で教え...
-
cgiからcgiをコールする。
-
ログイン成功の後は?
-
拡張子を省略してcgiを実行する...
おすすめ情報