PERL中包含“ - ”的文件名问题

时间:2011-07-06 08:00:09

标签: perl cgi xampp nph

我创建了一个名为“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状态消息说“文件已经移动到这里”。但是,当我重命名同一个文件时只需删除“ - ”,即新文件名是“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

响应标题是空白的。

1 个答案:

答案 0 :(得分:6)

首先,一些网络服务器以不同于任何其他cgi脚本的方式处理以'nph-'开头的cgi脚本,因此删除 - 将改变它。

您正在正确调用重定向; CGI的命名参数都必须以 - 开头 - ,像这样:

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

使用uri代替-uri,它使用位置参数,因此它会尝试重定向到'url'(您的网络服务器可能完全符合您的资格)。

如果 要使用nph脚本,设置redirect的nph选项会提供更全面的标题集;这可以解决您的问题:

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