• ベストアンサー

CGIで他のページに処理を委譲

Perl初心者です。 CGIモジュールを用いてWEBサイトを制作しています。 特定の条件に応じて他のページに処理を委譲したいのですが、 どのようなやり方が一般的なのかを教えて頂きたいです。 requireを使えばそれらしいことが出来ますが、 他に何かやり方がありますでしょうか。 フレームワークなどは用いていません。

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

  • ベストアンサー
  • urakids
  • ベストアンサー率77% (7/9)
回答No.2

なるほど。そういう事だったんですね。 >他の言語のライブラリですと、forwardというメソッドが用意されており Javaのサブレットとかで用意されているやつですよね。 う~ん、そうなるとperlでは難しいのかなぁ。 すいません、私の知識不足ですね。 もしかしたら、そういった事に対応したモジュールがCPANあたりに あるのかもしれないですが、わからないです。 ごめんなさい。

sobacasu
質問者

お礼

perlではこのような処理の切り分け方は一般的でないのでしょうか。 CPANからモジュールを探せばいいとのご意見、参考にさせて頂きます。

その他の回答 (2)

  • uwi
  • ベストアンサー率74% (55/74)
回答No.3

LWPなどでリクエストを送るのダメですか? 例えば、HTTP::Liteで単純に書くと、 --- #何か処理 my $GET = 何か処理した結果; use HTTP::Lite; my $http = new HTTP::Lite; my $req = $http->request("http://localhost/b.cgi?" . $GET) or die "$!"; print $req; LWPならもっと複雑なこともできます。

sobacasu
質問者

お礼

回答有難う御座います。 LWPについて少し見てみましたが、 クライアントからhttp処理を行うための ライブラリのようですね。 サーバでの処理の切り分け方について調べていましたが、 こちらも今後の参考にさせて頂きます。

  • urakids
  • ベストアンサー率77% (7/9)
回答No.1

ニュアンス的に捉えづらい内容ですが。 他ページに処理を渡す場合は引数を渡すか Cookie、セッションなどを使うと良いと思いますよ。 また、requireは別ページというか別プログラムに データを渡している訳ではではありません。 例えば、a.cgiとb.cgiがあり、 a.cgi内でb.cgiがrequireされていた場合 a.cgiが呼ばれた際にb.cgiがrequireされている場所に 展開されて、a.cgiが起動するという流れになります。 なので、べつにb.cgiに処理が移されている訳ではありませんよ。

sobacasu
質問者

補足

ご回答有難う御座います。 Cookie、セッションのみでは複数のスクリプト間で データを引き継ぐことは出来ますが、処理を任せることは できませんね。 処理の委譲というのは、一回のhttpレスポンスの間に 処理を行わせるスクリプトを分岐させられないか ということが言いたかったのです。 例をあげますと、 あるフォームからデータを送る際、 データを処理するa.cgiで入力エラーを検出したら、 エラーの画面を表示するb.cgiに処理を行わせ、 b.cgiの出力内容をhttpレスポンスとしたいのです。 他の言語のライブラリですと、forwardというメソッドが用意されており、 私の望むようなことが出来るのですが、 CGIモジュールのリファレンスを探しても forwardに該当する機能が見つからないようなので、質問させて頂きました。 説明不足で申し訳ありません。

関連するQ&A