アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
以下のようなことを考えています。

パラメーターを与え、そのパラメーターを「在る条件」で加工してファイルに出力していますが、
この「在る条件」が、結構頻繁に変更されます。

上記処理が1カ所なら条件が変更される都度直せば宜しいのですが、
パラメーターを与えるまでの違いのため、似たようなロジックですが複数本存在します。
a.cgi
b.cgi
c.cgi
d.cgi,,,,と。
(それぞれ前段が少しずつ違いますが、パラメータを渡すところからは同じです)

ということから、これらを親と子に分け、
パラメーターを渡すまでを親cgi、パラメーターを貰って加工しファイルに出力する部分を子cgiにすれば、
頻繁に基準が変わる「在る条件」を直すのは子cgiだけで済む、と考えます。
a.cgi コール x.cgi
b.cgi コール x.cgi
c.cgi コール x.cgi
d.cgi コール x.cgi,,,,のように。

教えていただきたいのは、
親(a.cgi b.cg c.cgi,,,)から子(x.cgi)をコールする部分のコーディングです。
(親はパラメータを与えて子をコールするだけ、
 子はファイルを出力するだけで親に結果を返すなどの処理は不要です、単純に戻るだけで構いません。)

実際の例を挙げていただければ嬉しいです。
宜しくお願いします。

A 回答 (2件)

一番お手軽な方法は require を使う方法ではないでしょうか。



例:呼び出し元のCGIからファイル名とテキストを渡し、require で読み込まれるライブラリでabc.txtを生成し、その中身にtestと書き込むスクリプト

##### 呼び出し元(a.cgi)
require "x.pl";
&makeFile("abc.txt","test");

##### require で読み込まれるライブラリ(x.pl)
sub makeFile {
$file = $_[0]; $writeText = $_[1];
open(FH,">$file");
print FH $writeText;
close(FH);
}

1;

なお、requireで読み込むライブラリは、最終行で真を返す必要があるので 1 を記述します。
    • good
    • 0
この回答へのお礼

早速有り難うございました。
教えていただいたモノに少しばかり私のロジックを加え、
やってみました。

私のローカル(perl環境)では思った通りの結果が出て出来ました。
喜んで、使わせて貰っているinfoseekライト(無料のレンタルサーバー)に登録したところ、
500番のエラーが出ました。
このサーバーではこのやり方を認めていないのでしょうか。
もしそうだと諦めないといけないのですね。
宜しくお願いします。

お礼日時:2010/01/27 05:46

> infoseekライト(無料のレンタルサーバー)に登録したところ、


> 500番のエラーが出ました。

infoseekのサーバは使ったことがないのですが、require はごくごく一般的な手法ですので、Perlが使えるサーバであれば普通ではありえないことです。

呼び出し元のCGIから require している行、及びサブルーチンを呼び出している行をコメントアウトするとどうなりますか?

これでエラーが出ないなら、require で読み込まれるファイルのほうに問題があります。
実は単純ミスで、FTP時にバイナリで転送しているのかもしれません。
    • good
    • 0
この回答へのお礼

またまた有り難うございました。
問題なく動くはず、
との勇気づけられるお言葉を頂いたので全てを見直しました。
というより、テストロジックだけを作ってやっていたので、
本番さながらに今回教えていただいた部分を加味、
本番で動かしてみました。

結果は全く問題なく、動きました。
テストのために分からないながら端折ったりした部分が影響していたのかなと思っています。

ということで、
これから同じロジックをコピーして全ての親に反映する力作業だけになり、先が見えました。
大変お世話になり有り難うございました。

お礼日時:2010/01/28 16:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!