如何在Perl脚本中获取当前域名,即$_SERVER['HTTP_HOST']
PHP变量的等效Perl代码?
答案 0 :(得分:8)
单独的主机名几乎从不有用,您还需要服务器端口,组合昵称 netloc 。您很可能需要此值来构造脚本的URI。这已经包含在框架中,无需手动执行此操作。以下两种方式的代码示例。
在PSGI中,请从PSGI环境哈希中读取“变量”HTTP_HOST
(或者SERVER_NAME
和SERVER_PORT
),或者调用uri
method in Plack::Request。
use Plack::Request qw();
my $app = sub {
my ($env) = @_;
my $req = Plack::Request->new($env);
return [200, ['Content-Type' => 'text/plain'], [
sprintf "Host: %s\nURI: %s", $env->{HTTP_HOST}, $req->uri
]];
};
在CGI中,组合POSIX环境变量SERVER_NAME
and SERVER_PORT
,或调用url
方法。
use CGI qw();
my $c = CGI->new;
print $c->header('text/plain');
print "Host: $ENV{SERVER_NAME}:$ENV{SERVER_PORT}\n";
print "URI: " . $c->url;