Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенаправление вывода, Perl 5.8, apache 2xxx (CGI) 
:(
    Опции темы
tishaishii
Дата 4.2.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Скрипт работает как CGI.

Код

use IO::Handle;

open my$inp, '<'.$ENV{PATH_TRANSLATED};binmode $inp;
open my$out, '|E:\dev\Perl\bin\perl.exe -IE:/dev/turbomechanikaug -Mmod::Handler -MIO::Handle -Mlocale|';binmode $out;
$out->print(<$inp>);                # №1
STDOUT->print('[', -s $out, ']'); # №2  # выводит "[0]"


Почему-то результат выводится сразу в строке, помеченной "№1", в STDOUT. А хочется поймать вывод в свою файловую переменную и продолжить обработку. Как сделать?

Это сообщение отредактировал(а) tishaishii - 4.2.2010, 18:26
PM MAIL ICQ Skype   Вверх
arto
Дата 7.2.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 1
Всего: 40



perldoc IPC::Open2
PM MAIL ICQ   Вверх
tishaishii
Дата 8.2.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Хорошо, работает. Но не всё.

Код:
Код

#!perl.exe -IE:/dev/mod

#use mod::Handler;
use IO::Handle;
use IPC::Open2;

my($inp, $out);
my$pid=open2($out, $inp, 'perl.exe '.join(' ', map '-I"'.$_.'"', @INC).' -MIO::Handle -Mlocale "'.$ENV{PATH_TRANSLATED}.'"');
# этот скрипт - фильтр для других CGI-скриптов
# т.е. человек вызывает /data/test.plx, а на самом деле выполняется `"perl.exe" "e:\\dev\\www\\data\perlx.pl" "%PATH_TRANSLATED%"`
binmode $out;
binmode $inp;
$inp->print(<STDIN>);
#$r->headers->Parser->execute($out);
STDOUT->print(<$out>); # для простоты экперимента
$out->close;
$inp->close;

waitpid $pid, 0;


С запросами типа GET всё нормально. Проблема с запросами POST - появляется бесконечный цикл (где?).
Пытался комментировать строчку "$inp->print(<STDIN>);" - не катит всё равно.

Это сообщение отредактировал(а) tishaishii - 8.2.2010, 18:17
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0378 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.