まず、私が使用しているコードは次のとおりです (実行するにはHTTP::Server::Simpleのバージョン 0.42 が必要です):
#!/usr/bin/perl
package My::HTTP::Server;
use strict; use warnings;
use parent 'HTTP::Server::Simple::CGI';
sub handle_request {
my $server = shift;
my ($cgi) = @_;
print $cgi->header('text/plain'), $cgi->state, "\n";
}
package main;
use strict; use warnings;
my $server = My::HTTP::Server->new;
$server->cgi_class('CGI::Simple');
$server->cgi_init(sub {
require CGI::Simple;
CGI::Simple->import(qw(-nph));
});
$server->port(8888);
$server->run;
サーバーを起動して を参照するとhttp://localhost:8888/here/is/something?a=1
、出力が得られますhttp://localhost:8888E:\Home\Src\Test\HTTP-Server-Simple\hts.pl/here/is/something?a=1
。これは、 ifが空または未定義CGI::Simple
であるかを調べるためです。したがって、解決策は次のように書くことだと思いました。$0
$ENV{SCRIPT_NAME}
$server->cgi_init(sub {
$ENV{SCRIPT_NAME} = '/';
require CGI::Simple;
CGI::Simple->import(qw(-nph));
});
今、私が得る出力はhttp://localhost:8888//here/is/something?a=1
. 余分に注意してください/
。
それは問題ありませんか、これに対処するより良い方法はありますか?
mod_perl
レジストリ スクリプトまたはスタンドアロン アプリケーションとして展開できるアプリケーションを作成しようとしています。