Re: perlsub

Поиск
Список
Период
Сортировка
Искать
От
Oliver Elphick
Тема
Re: perlsub
Дата
Msg-id
1065248410.4459.95.camel@linda.lfix.co.uk
Ответ на
perlsub (Nabil Sayegh)
Список
Дерево обсуждения
perlsub Nabil Sayegh <postgresql@e-trolley.de>
Re: perlsub Oliver Elphick <olly@lfix.co.uk>
Re: perlsub Nabil Sayegh <nas@e-trolley.de>
Re: perlsub Martin_vi_Lange@t-online.de (Martin Lange)
Re: perlsub Nabil Sayegh <postgresql@e-trolley.de>
Re: perlsub Jeff Eckermann <jeff_eckermann@yahoo.com>
Re: perlsub Nabil Sayegh <postgresql@e-trolley.de>
Re: perlsub Jeff Eckermann <jeff_eckermann@yahoo.com>
Re: perlsub Oliver Elphick <olly@lfix.co.uk>
Re: perlsub Jeff Eckermann <jeff_eckermann@yahoo.com>
Re: perlsub Tom Lane <tgl@sss.pgh.pa.us>
Re: perlsub Jeff Eckermann <jeff_eckermann@yahoo.com>
Re: perlsub Jeff Eckermann <jeff_eckermann@yahoo.com>
Re: perlsub Daniel Staal <DStaal@usa.net>
On Sat, 2003-10-04 at 00:29, Nabil Sayegh wrote:
> Hello again,
> 
> now that perlsub works i need to know how backreferences work with 
> plperl. $1 - $9 doesn't work. Any idea ?
> 
> perlsub:
> -----------------------------------------------
> CREATE FUNCTION perlsub(text, text, text) RETURNS text AS '
>      my ($data, $pat, $repl) = @_;
>      $data =~ s/$pat/$repl/;
>      return $data
> ' LANGUAGE 'plperl';
> -----------------------------------------------
> 
> SELECT perlsub('a=b','([^=]+)=(.+)','key:$1;val:$2');
> 
> Any idea ? Just a matter of quoting ?

It's a problem with Perl itself rather than with PL/Perl.  I tried that
in a Perl script and it produces the same result.  I couldn't find any
way of including $ in the replacement string as a metacharacter.

You need to consult a Perl guru.

When you do get an example that works in a script, remember to double
any single quotes and backslashes when you create the function.

> Also this example doesn't work with * instead of + :(

I don't see any difference:
 
junk=# SELECT perlsub('a=b','([^=]*)=(.*)','key:$1;val:$2');
    perlsub
---------------
 key:$1;val:$2
(1 row)
 
junk=# SELECT perlsub('a=b','([^=]+)=(.+)','key:$1;val:$2');
    perlsub
---------------
 key:$1;val:$2
(1 row)
 

-- 
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "For the word of God is quick, and powerful, and  
      sharper than any twoedged sword, piercing even to the 
      dividing asunder of soul and spirit, and of the joints
      and marrow, and is a discerner of the thoughts and 
      intents of the heart."        Hebrews 4:12 

В списке pgsql-novice по дате отправления
От: Nabil Sayegh
Дата:
Сообщение: perlsub
От: Martin_vi_Lange@t-online.de (Martin Lange)
Дата:
Сообщение: Re: perlsub
FAQ