【问题标题】:What's the Perl equivalent of PHP's $_SERVER[...]?PHP 的 $_SERVER[...] 的 Perl 等价物是什么?
【发布时间】:2011-03-25 15:30:36
【问题描述】:

以下 PHP 调用的 Perl 等效项是什么?

$_SERVER["HTTP_HOST"]
$_SERVER["REQUEST_URI"]

任何帮助将不胜感激。

【问题讨论】:

    标签: perl cgi


    【解决方案1】:

    除了可变环境之外,另一种方法是使用 CGI:

    
    use strict;
    use warnings;
    use CGI ;
    
    print CGI->new->url();
    
    

    此外,它还提供了大量的 CGI 操作,例如 当访问参数发送到您的 cgi、cookie 等...

    【讨论】:

      【解决方案2】:

      环境变量是网络服务器发送给您运行的每个 CGI 的一系列隐藏值。您的 CGI 可以解析它们并使用它们发送的数据。环境变量存储在名为 %ENV 的哈希中。

      例如,$ENV{'HTTP_HOST'} 将提供您服务器的主机名

      #!/usr/bin/perl
      
      print "Content-type:text/html\n\n";
      print <<EndOfHTML;
      <html><head><title>Print Environment</title></head>
      <body>
      EndOfHTML
      
      foreach my $key (sort(keys %ENV)) {
          print "$key = $ENV{$key}<br>\n";
      }
      
      print "</body></html>";
      

      更多详情请见CGI Environmental variables

      【讨论】:

        【解决方案3】:

        或者您可以这样做并使用变量 $page_url。

        my $page_url = 'http';
        $page_url.='s' if $ENV{HTTPS};
        $page_url.='://';
        if($ENV{SERVER_PORT}!=80)
        {
            $page_url.="$ENV{SERVER_NAME}:$ENV{SERVER_PORT}$ENV{REQUEST_URI}";
        }
        else
        {
            $page_url.=$ENV{SERVER_NAME}.$ENV{REQUEST_URI};
        }
        

        【讨论】:

        • 完美 :) 效果很好
        【解决方案4】:

        您工作的环境是什么?如果是 CGI 脚本试试:

        use Data::Dumper;
        print Dumper \%ENV;
        

        【讨论】:

        • 这很好用,谢谢。您是否也知道 PHP 函数 file_get_contents() 的 Perl 等价物?我一直在玩 open,但无法像 file_get_contents() 那样访问不同服务器上的页面。
        • @dandemeyere: 我通常做的是:打开 FILE, $data = join'', 然后关闭 FILE
        • hlynul 关于 file_get_contents 的回答是错误的。 dandemeyere 在stackoverflow.com/questions/3413151 询问(并得到了该问题的答案)
        猜你喜欢
        • 1970-01-01
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 2012-03-20
        • 2023-04-04
        • 2011-09-14
        相关资源
        最近更新 更多