【问题标题】:How can I read the URL parameter in a Perl CGI program?如何在 Perl CGI 程序中读取 URL 参数?
【发布时间】:2009-06-15 15:14:39
【问题描述】:

如何在 Perl CGI 程序中读取 URL 参数?

【问题讨论】:

  • Stackoverflow 是许多人的首选,Google 的“我觉得很幸运”在此处用于多次搜索。所以上面的这些 cmets 是无用的噪音,并请求 stackexchange 为 cmets 添加 downvoting。

标签: perl cgi uri


【解决方案1】:

对于GET 请求CGI 解析指定的参数并通过param() 方法使它们可用。

对于 POST 请求param() 将返回来自 postdata 的参数,但通过 URL 本身中的查询字符串指定的任何参数仍可从 url_param() 方法获得。 (当 POST 请求大于 $CGI::POST_MAX 时,这会很有帮助;在这种情况下,CGI 只会丢弃 postdata,但您可以安排查询字符串参数来识别它是什么类型的请求,以提供良好的错误消息.)

对于ISINDEX 样式请求,所请求的关键字可通过keywords() 方法获得,也可通过param() 在虚假的“关键字”参数中获得。

更新:如果您的意思不是“URL 参数”的参数,url() 方法会提供全部或部分请求的 URL;见OBTAINING THE SCRIPT'S URL

【讨论】:

    【解决方案2】:

    建议您使用 ysth 提到的 URL 解析器,但如果您真的想要原始输入,可以通过以下方式获得:

    对于 GET:

    $contents = $ENV{'QUERY_STRING'};
    

    对于 POST:

    $contents = <STDIN>;
    

    【讨论】:

      【解决方案3】:

      试试这样的代码:

      my @names = $query->param;
      foreach $name ( @names ) {
          if (  $name =~ /\_/ ) { 
              next;
          } else {
              print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n";
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        • 2014-04-18
        • 2012-01-14
        • 2022-11-23
        • 2013-12-23
        • 2021-07-10
        • 2019-07-12
        相关资源
        最近更新 更多