2011-11-04 68 views
-1

如何在Perl腳本中獲取當前域名,即與PHP變量$_SERVER['HTTP_HOST']等效的Perl代碼?

+0

當要求技術中的等價物時,請用兩個名稱標記它。提供文件或描述,以便不僅知道雙方都可以回答的人,還有隻知道其中一個人的人。我編輯了這個問題來改善這一點。 – daxim

回答

8

單獨使用主機名幾乎是沒有用的,您還需要服務器端口,組合中暱稱爲netloc。很可能你需要這個值來構建一個到腳本的URI。這已經包含在框架中,不需要手動完成。爲以下兩種方式編碼樣本。


在PSGI,讀出的 「可變」 HTTP_HOST從PSGI環境哈希(或者,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; 
+0

對於'CGI :: url' /'Plack :: Request :: uri' +1。 –

相關問題