Forum Webscript.Ru

Программирование => Perl => Тема начата: DSA от 15 Июля 2005, 15:22:05

Название: Вызов perl скрипта из другого perl скрипта
Отправлено: DSA от 15 Июля 2005, 15:22:05
Здравствуйте многоуважаемый All!

Не подскажите ли как можно реализовать сабж. То есть, например, у меня такая ситуация:
При выполнении какого-то условия мне нужно отправить пользователя к другому скрипту.
Я пробовал пользоваться методом CGI->redirect("test.pl",1) (тоесть перенаправление на скрипт test.pl через 1 секунду), но он ведет себя мягко говоря по странному, иногда запуская нужный скрипт,а иногда выдавая такой результат:

Status: 302 Moved Window-Target: 1 location: test.pl

Подскажите, пожалуйста, как это можно реализовать.
Название: Вызов perl скрипта из другого perl скрипта
Отправлено: Green Kakadu от 16 Июля 2005, 02:50:24
Цитировать
DSA:
Я пробовал пользоваться методом CGI->redirect("test.pl",1) (тоесть перенаправление на скрипт test.pl через 1 секунду), но он ведет себя мягко говоря по странному, иногда запуская нужный скрипт,а иногда выдавая такой результат:

Status: 302 Moved Window-Target: 1 location: test.pl

1. печатает такое, то значит уже ранее были заголовки напечатаны, что неправильно
2. CGI->redirect("test.pl",1) насчет "перенаправления через 1 сек", вас кто-то обманул :)  Возможно вам проще сделать страницу-шаблон редиректа, куда будет вставляться урл редиректа и время (это там время указывается), если же хотите через HTTP заголовки, то используйте ее правильно
Цитировать

   print $query->redirect(\'http://somewhere.else/in/movie/land\');

Sometimes you don\'t want to produce a document yourself, but simply redirect the browser elsewhere, perhaps choosing a URL based on the time of day or the identity of the user.

The redirect() function redirects the browser to a different URL. If you use redirection like this, you should not print out a header as well.

You should always use full URLs (including the http: or ftp: part) in redirection requests. Relative URLs will not work correctly.

- т.е. указываем полный урл (c http://)
- не выдаем HTTP заголовки до вызова редиректа (они отправляются при:
 print $query->redirect(\'http://somewhere.else/in/movie/land\');
Название: Вызов perl скрипта из другого perl скрипта
Отправлено: Green Kakadu от 16 Июля 2005, 02:54:02
Цитировать
DSA:
Вызов perl скрипта из другого perl скрипта

и редирект - это не вызов скрипта из другого скрипта, это перенаправление с одного скрипта на другой. Если же вам нужно из скрипта1 вызвать другой скрипт2, чтоб он что-то сделал и результат отдал скрипту1 ,то это все делается иначе (помнится на форуме это подробно и не раз обсуждалось)
Название: Вызов perl скрипта из другого perl скрипта
Отправлено: DSA от 16 Июля 2005, 06:30:56
В очередной раз спасибо Вам за великолепный ответ, Зеленый Какаду :-)
Не подскажите где на форуме кнопочка добавления рейтинга?:)
Я ее почему-то не наблюдаю, хотя так хочется хоть и такой мелочью, но все же хоть как-то вас отблагодарить :-)

Насчет метода redirect() - мне кажеться весьма неудобная функция, т.к. невозможно использовать ее и в то же время послать пользователю кукис, поэтому я решил эту проблему таким способом:

print header(-cookie=>$cookie,-Refresh => "1; URL = test.pl");

Что практически индентично, но зато более функционально. :)
Название: Вызов perl скрипта из другого perl скрипта
Отправлено: Green Kakadu от 16 Июля 2005, 12:59:43
Цитировать
DSA:
print header(-cookie=>$cookie,-Refresh => "1; URL = test.pl");

вот только насчет того что "URL=test.pl"
Цитировать

You should always use full URLs (including the http: or ftp: part) in redirection requests. Relative URLs will not work correctly.

могут работать неправильно..