【问题标题】:Issue with filename containing "-" in PERLPERL 中文件名包含“-”的问题
【发布时间】:2011-07-06 08:00:09
【问题描述】:

我创建了一个名为“nph-select.pl”的文件,并将重定向代码如下所示。

#!"D:\xampp\perl\bin\perl.exe" -w
use CGI qw/:standard/; 
my $cgi = new CGI; 
print $cgi->redirect(-uri => 'http://www.google.com/', -nph => 1); 

并执行文件然后它给我 302 STATUS 消息说“文档已移至此处”。但是当我只是通过删除“-”来重命名同一个文件时,即新文件名是“nphselect.pl”,那么它也可以通过重定向正常运行。有人可以建议我缺少什么设置吗?

我的请求标头是 Host localhost:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 115 Connection keep-alive

而 RESPONSE HEADERS 为空白。

【问题讨论】:

    标签: perl cgi xampp nph


    【解决方案1】:

    首先,一些网络服务器对待以“nph-”开头的 cgi 脚本不同于任何其他 cgi 脚本,因此删除 - 会改变这一点。

    您错误地调用了重定向; CGI的命名参数都必须以-开头,像这样:

    print $cgi->redirect(-uri => 'http://perl.about.com/'); 
    

    使用uri 而不是-uri,它使用位置参数,因此它会尝试重定向到“url”(您的网络服务器可能完全适合您)。

    如果您打算使用 nph- 脚本,设置重定向的 nph 选项可提供更完整的标题集;这可能会解决您的问题:

    print $cgi->redirect(-uri => 'http://perl.about.com/', -nph => 1); 
    

    【讨论】:

    • 现在我收到“Internet Explorer 无法显示网页”错误。
    • @Rahul:在您的问题中,请显示您当前的完整代码并说明文件名是什么以及您正在运行什么网络服务器。
    • 我已将当前代码粘贴到我的问题中。并添加了“-nph=>1”。
    • 以下是代码,我在 xampp 上运行。 #!"D:\xampp\perl\bin\perl.exe" -w 使用 CGI qw/:standard/;我的 $cgi = 新的 CGI;打印 $cgi-&gt;redirect(-uri =&gt; "<a href="/default/index/tourl?u=aHR0cDovL3BlcmwuYWJvdXQuY29tLw%3D%3D" rel="nofollow" target="_blank">perl.about.com</a>", -nph =&gt; 1);
    • 你将不得不使用一些东西来显示你的服务器的实际响应以获得进一步的信息,例如,curl -v your-url
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2011-03-14
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多