道草日記

通勤幾星霜…寄り道回り道の日記です。

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

Perlの CGI から他の CGI を呼び出すには

2009-08-18 | Perl
レンタルサーバでは好ましくないが、やむを得ずPerlのCGIから他のCGIを呼び出すには、exec または system 関数を使う。
----------------------------------------
・exec コマンド/cgi [,引数] [,引数…]
・system コマンド/cgi [,引数] [,引数…]
----------------------------------------
exec関数は、引数をリストとして渡し、コマンド/cgiを実行する。実行後は親のPerlスクリプト(cgi)に処理は戻らない。ただし、ブラウザから親cgiを呼び出し→子cgiを実行した場合は、ブラウザには子cgiの実行結果が親cgiの実行結果として戻される。
system関数は、引数をリストとして渡し、コマンド/cgiを実行する。実行後は親のPerlスクリプト(cgi)に処理が戻る。system関数は実行した子コマンドが終了するのを待ち、その終了ステータスを返す。
いずれも引数は子側では@ARGV配列に入るので、$ARGV[0]などとして利用する。

・親cgiの例
oya-exe.cgi ( execで呼び出す場合 )
--------------------------------------------------------
#!/usr/bin/perl

$str1 = "rain";
$str2 = "morning.";
exec ( "./child.cgi" , $str1 , $str2 );
print "OK"; #処理が戻らないので、この行は実行されない。
--------------------------------------------------------

oya-sys.cgi ( systemで呼び出す場合 )
--------------------------------------------------------
#!/usr/bin/perl

$str1 = "fine";
$str2 = "morning.";
system ( "./child.cgi" , $str1 , $str2 );
print "OK"; #処理が戻るので、この行が実行される。
--------------------------------------------------------

・子cgiの例
child.cgi
--------------------------------------------------------
#!/usr/bin/perl

print "Content-type: text/htmlnn";
print "It will be " . $ARGV[0] . " " . $ARGV[1];
--------------------------------------------------------

コメント   この記事についてブログを書く
« paraflaが出力するhtmlで「ム... | トップ | JavaScript:テキスト表示・... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Perl」カテゴリの最新記事