|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander Kostiuchenko 2:463/672.419 28 Dec 2001 20:39:38 To : Sergey Yurevich Subject : HTTP-заголовки --------------------------------------------------------------------------------
Как-то раз (а точнее 24 Dec 01 в 21:02) Dima Marakasov писал(а) к Sergey
Yurevich:
SY>> Чтобы вывести что-либо броузеру сначало обычно печатается строка
SY>> типа print "Content-type: text/html\n\n"; всё бы хорошо, но
SY>> программа довольно сложная и состоит из множества подлпрограмм,
SY>> которые в свою очередь пользуются данной строкой. Из-за этого
SY>> получаются накладки типа двойной вывод строки. Первая идёт как
SY>> http-заголовок, а вторая пеатается на странице, а мне этого не
SY>> нужно. То как узнать была ли уже напечатана такая строка или нет?
DM> Сделать sub вида:
DM> sub printContentType
DM> {
DM> if(printedContentType==0) { print "Content-type: text/html\n\n" }
имхо практичней написать свой tie-класс, реализующий Tie::Handle и связать
STDERR с этим классом. В конструкторе - запоминаем старый хэндл STDOUT, методы
PRINT/PRINTF/STORE - помещают строки во внутренний буффер, в деструкторе делаем
c буффером, что нам надо (в нашем случае - удаляем дублирующиеся заголовки),
восстанавливаем старый STDOUT и выводим содержимое буффера.
Получаем функциональный аналог функций PHP ob_*.
Имхо, что-то готовое должно быть на CPAN - лень щас смотреть.
--
mailto: random at info.net.ua //Александр
* Origin: useless (2:463/672.419)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/40293c2cd0a8.html, оценка из 5, голосов 10
|