Re: Как запустить perl-программу в nginx

Vladislav Vladimirovich tvword на gmail.com
Пт Авг 5 05:33:24 UTC 2011


4 августа 2011 г. 23:12 пользователь Денис Ильиных <greyhard at gmail.com>написал:

> попробуйте такой пример. Работает только с GETом )
> use YAML;
>
> sub handler {
>    my $r = shift;
>
>    my %qparam;
>    my @arr = split('&',uri_unescape($r->args));
>    for(@arr){
>        my @var = split('=',$_);
>        $qparam{$var[0]}=$var[1];
>    }
>
>    $r->header_out("Content-Type","text/html; charset=utf-8");
>    $r->send_http_header();
>
>    $r->print(Dump(%qparam));
>    $r->print($r->uri);
>
>    return OK;
>
> }
>
>
> localhost:80/nginx/test/test/?a=1&b=2
>

Благодарю! Получилось. Правда есть нюансы. Окончательный вариант такой:

package perl_module_nginx_my;

use nginx;

sub handler {

    my $r = shift;

    $r->header_out("Content-Type","text/html; charset=utf-8");
    $r->send_http_header();
    return OK if $r->header_only;

    my %qparam;
    my @arr = split('&',$r->args);

    for(@arr){
       my @var = split('=',$_);
       $qparam{$var[0]}=$var[1];
    }

    $r->print("hello!\n<br/>");

    $r->print(join(":",%qparam)) ;
    $r->print($r->uri);

    return OK;

}

1;
__END__
________________________________________________________

Теперь нюансы:
1. use YAML подключить не получилось. Его почему-то у меня нет. Может
отдельно надо ставить, но и без него в принципе можно обойтись.
2. uri_unescape не работает, возможно потому что не подключен модуль YAML.
Но это не критично. Для передачи простых параметров и так пойдёт...
3. Dump почему-то тоже не работает. Не знаю зачем он там нужен, но я сделал
разбивку массива хэшей через join.
4. Не совсем понятно, зачем в примере модуля hello вот эта строка - return
OK if $r->header_only; На всякий случай оставил ее у себя.

________________________________________________________

Спасибо за помощь!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20110805/b09c9ba4/attachment.html>


Подробная информация о списке рассылки nginx-ru