Что такое Perl-эквивалент $ _SERVER ['HTTP_HOST'] в PHP? - PullRequest
0 голосов
/ 04 ноября 2011

Как получить текущее имя домена в скрипте Perl, то есть эквивалентный код Perl для переменной PHP $_SERVER['HTTP_HOST']?

1 Ответ

8 голосов
/ 04 ноября 2011

Одно только имя хоста почти никогда не используется, вам также нужен порт сервера в сочетании с прозвищем netloc .Скорее всего, вам нужно это значение для создания URI для скрипта.Это уже включено в фреймворки, нет необходимости делать это вручную.Ниже приведены примеры кода для обоих способов.


В PSGI прочитайте «переменную» HTTP_HOST (или SERVER_NAME и SERVER_PORT) из хеша среды PSGI или вызовите uri метод в 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 и 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...