PHP中的$ _SERVER ['HTTP_HOST']的Perl等价物是什么?

时间:2011-11-04 06:18:51

标签: php perl

如何在Perl脚本中获取当前域名,即$_SERVER['HTTP_HOST'] PHP变量的等效Perl代码?

1 个答案:

答案 0 :(得分:8)

单独的主机名几乎从不有用,您还需要服务器端口,组合昵称​​ netloc 。您很可能需要此值来构造脚本的URI。这已经包含在框架中,无需手动执行此操作。以下两种方式的代码示例。


在PSGI中,请从PSGI环境哈希中读取“变量”HTTP_HOST(或者SERVER_NAMESERVER_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;