Проблема с именем файла, содержащим "-" в PERL

Я создал файл с именем "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); 

и после выполнения файла он выдает мне сообщение STATUS 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 ответ

Во-первых, некоторые веб-серверы обрабатывают сценарии cgi, начинающиеся с nph-, иначе, чем любой другой сценарий cgi, поэтому удаление - изменит это.

Вы звоните перенаправить неправильно; Все именованные параметры CGI должны начинаться с - вот так:

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

С uri вместо -uri, он использует позиционные параметры, поэтому он пытается перенаправить на "URL" (который ваш веб-сервер может полностью соответствовать вашим требованиям).

Если вы собираетесь использовать nph-скрипт, установка опции nph для redirect предоставляет более полный набор заголовков; это может решить вашу проблему:

print $cgi->redirect(-uri => 'http://perl.about.com/', -nph => 1); 
Другие вопросы по тегам