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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> постобработка сформированной страницы в perl, обработать результат работы perl скрипта 
:(
    Опции темы
pavel_p
Дата 3.12.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 27.7.2007

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



Хочу прикрутить к старому проекту на перле человекопонятные урлы а переписывать все пассажи <a href="services?a='.$rub->[0].'&b='.$rub->[1].'&c='.$rub->[2].'&d='.$rub->[3].'"  на более централизованное формирование адресов не имею ни какого желания. поэтому хочу узнать есть ли в этом языке возможность сграбить всю страницу в переменную, а потом уже оперировать при помощи регулярных выражений. на подобии функций ob_start/ob_get_clean в языке php 
PM MAIL   Вверх
Сумасшедший
Дата 5.12.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


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

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



ну для начала - ничего не мешает сразу писать всё в переменную.. да и потом - проще будет поспользоваться шаблонизаторами;)


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
tolkien
Дата 6.12.2008, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

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



Направить вывод с STDOUT в файл открытый в памяти. 
PM MAIL   Вверх
sir_nuf_nuf
Дата 6.12.2008, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



Ну..  разомнемся!

Tie  + select все решают

Код

#это добавляем в заголовок
use CGI::Buffer;
grab();

# здесь ваши старые добры CGI макароны
print "hello\n";
print "hello, what i said!\n";

#тут делаем все что хотим.
my $g = release();
$g =~ s/o/O/sg;
print $g;


а теперь и сам CGI::Buffer
Код

use warnings;
use strict;

package CGI::Buffer;

use base qw(Tie::Handle Exporter);

our $grabbed;
our @EXPORT = qw(grab release);
our @EXPORT_OK = qw($grabbed);


sub TIEHANDLE {
    return bless {};
}

sub WRITE {
    $grabbed .= substr($_[1], $_[3], $_[2]);
}

sub grab {
    $grabbed = "";
    tie *STDOUT, __PACKAGE__;
}

sub release {
    untie *STDOUT;
    return $grabbed;
}

1;


ничто не мешает извернуться еще сильнее и избавится от функции grab().
ну и т.д.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 6.12.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



вот еще одна вариация. здесь вообще в CGI нужно добавить лишь 1 строку.

Код

use warnings;
use strict;

package CGI::OutFilter;

use base qw(Tie::Handle);

our $grabbed;
our @filters = ();

sub import {
    push @filters, grep {ref eq 'CODE'} @_[1, -1];
}

sub TIEHANDLE {
    return bless {};
}

sub WRITE {
    $grabbed .= substr($_[1], $_[3], $_[2]);
}

BEGIN {
    $grabbed = "";
    tie *STDOUT, __PACKAGE__;
}

END {
    untie *STDOUT;
    $_->($grabbed) for @filters;
    print $grabbed;
}

1;


Код

use CGI::OutFilter sub {$_[0] =~ s/hello/avast/};
print "hello\n";
print "hello, what i said!\n";


А еще как вариант - написать фильтр для apache


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


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

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


 




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


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

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