例: /path1/cgi-bin/your_project.cgiCGI起動スクリプトが置かれるパスです。 このパスがhttp://host/cgi-bin/your_project.cgi のようにURLとして公開されます。
例: /path2/your_project/inc/ここを.pmなどのプログラム・ファイルがサーチされるパスとして@INCに追加します。 リードオンリーとなります。
例: /path3/your_project/data/ここを実行時のカレントディレクトリとし、データファイル、ログファイル、作業ファイル等を書き出させます。 書き込みパーミッションを与えます。
URLでプログラムやデータを指すことがないよう、公開パスとそれ以外を分ける必要があります。
UNIXシェル環境ではプログラムは/binなどのパスに置かれます。
Windows環境ではC:\Program Filesなどに置かれます。
同様にJava実行環境ではクラスパスというものがあります。
それらに相当するのが上記プログラムパスで、作業パスとは区別されます。
例: package _YourCorp::YourProj::YourModule;パッケージ名のトップレベルにアンダーバーを含ませるとCPANに登録されているライブラリとの衝突が防がれます。
/path2/your_project/inc/_YourCorp/YourProj/YourModule.pm
--------------------------------------------------
package _YourCorp::YourProj::YourModule;
sub get_footer {
return qq(**** All rights reserved. YourCorp. ****\n);
}
1;
--------------------------------------------------
/path2/your_project/inc/_YourCorp/YourProj/CGI.pm
--------------------------------------------------
package _YourCorp::YourProj::CGI;
use base qw(Exporter); @EXPORT = qw(cgi);
use _YourCorp::YourProj::YourModule;
use CGI;
# CGI用メインルーチン
sub cgi {
print "Content-type:text/plain\n";
print "\n";
print "Hello, world!\n";
print _YourCorp::YourProj::YourModule->get_footer();
}
1;
--------------------------------------------------
Exporterを利用して、メインルーチンを@EXPORTでEXPORTします。
メインルーチン以外をEXPORTしたい場合は@EXPORTではなく@EXPORT_OK, %EXPORT_TAG を使用して下さい。
このメインルーチンを呼び出すための
CGI起動スクリプトは以下のようになります。
/path1/cgi-bin/your_project.cgi -------------------------------------------------- #! command_shell cd /path3/your_proj/data/ perl -I/path2/your_proj/inc -M_YourCorp::YourProj::CGI -e cgi -- arg1 arg2 --------------------------------------------------または
/path1/cgi-bin/your_project.cgi
--------------------------------------------------
#! perl
BEGIN {chdir '/path3/your_proj/data/';}
use lib qw(/path2/your_proj/inc);
@ARGV = qw(arg1 arg2);
use _YourCorp::YourProj::CGI;
&cgi;
exit;
--------------------------------------------------