Perlの中で他のPerlファイルを呼ぶには?

[上に] [前に] [次に]
まりい 1999/07/14(水) 13:08:25
Perlの中で他のPerlファイルを呼びたいのですが、その時に呼ぶ側からデータを送りたいのです。
その場合にはどのような書き方をすればいいのでしょうか?

ふじ 1999/07/14(水) 13:36:05
・引数で渡す。
`perl hoge.pl $data1 $data2`;

・標準入力から渡す。
open (SCRIPT , "| perl hoge.pl");
print SCRIPT $data1, $data2;
close SCRIPT;

まりい 1999/07/14(水) 14:41:37
ふじ様、返答ありがとうございました。
ですが、初心者の私にはどこに書き込めばいいのか、ちょっと分からないのですが・・・
もう少し詳しく書き足して頂けないでしょうか?

引数で渡す方はPerlのファイルの中にそのまま一行書き込めばいいのですか?
私の使うファイル名を記入して、その行を書きますので変なところがあったら指摘して頂けないでしょうか?

"Perl $FNAME $ccd";
ちなみに変数には
$FNAME ="http://ono_sv/shimu/cgi6/user.pl"
$ccd = "大川商会"
というデータが入っています。

ふじ 1999/07/14(水) 15:31:49
""(ダブルクォート)じゃなくて、``バッククォートで括ります。
それと、Perlの綴り、頭が大文字ですが、コマンド名ですので
大文字小文字は区別されます(UNIXの場合。Windowsだと大丈夫だけど)

>$FNAME ="http://ono_sv/shimu/cgi6/user.pl"
$FNAME = "/home/www/cgi-bin/hoge.pl";
のように絶対パスで指定します。

あと、user.pl が実行した結果を標準出力に出して、それを元のスクリプトで
受け取る必要があるのなら、、

open (SCRIPT , "perl $FNAME $ccd | ");
@_ = <SCRIPT>;
close SCRIPT;

として、パイプを使って受け取ります。

ところで以上の話、呼び出される側のスクリプトが同じマシンに
あることが前提なのですが、それで大丈夫ですか?
ローカルのマシンでPerlスクリプトを動かしていて、その中から
http://ono_sv/shimu/cgi6/user.pl というCGIスクリプトを実行したい、
ということだと、別の手が必要になりますが。

KAN 1999/07/14(水) 18:51:45
便乗質問させてください

>ローカルのマシンでPerlスクリプトを動かしていて、その中から
>http://ono_sv/shimu/cgi6/user.pl というCGIスクリプトを実行したい、
>ということだと、別の手が必要になりますが。

 は、ソケットを使えば良いのでしょうか? それとも、他にも
何か方法はありますか?(unixの場合)

B-Cus 1999/07/14(水) 18:56:30
> ソケットを使えば良いのでしょうか?
ソケットを使うか、LPWなどのライブラリを使えばいいです
(まぁ結局内部でソケット使うんですけどね)。

まりい 1999/07/15(木) 14:53:44
ふじ様、返答ありがとうございました。

もう一つお聞きしたいことがあります。
この、教えて頂いた(引数の方)書き方はPerlのバージョン全てで使えるものでしょうか?
それとも使えるバージョンが限られているのでしょうか?
限られているのであれば、そのバージョンも教えて頂きたいのですが。
宜しくお願いします。

ふじ 1999/07/15(木) 15:35:24
どちらの方法も、Perl4 ,5 両方で使えると思います。
3以前は知りません(^^;

KAN 1999/07/16(金) 10:12:47
[[解決]]
B-Cusさん、回答ありがとうございました。地道にソケットを
いじってみます。
おそらくこれで回答は出そろったと思いますので、解決をチェック
しておきます。

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