s///g v kombinaci s (?<=)

Ondrej Koala Vacha koala na fi.muni.cz
Čtvrtek Září 5 20:43:53 MEST 2002


On Thu, 5 Sep 2002, David Olszyński wrote:

> Michal Špaček wrote:
> 
> Ta volba /g sice znamena "pro vsechny vyskyty", ale tim se musi myslet "pro 
> vsechny vyskyty v _puvodni_ hodnote".
> Podle me se to proste nemuze delat "in place", protoze treba vec jako
> $ perl -e '$a = "baa\n"; $a =~ s/(?<=b)/b/g; print "$a\n"'
> by pak asi generovala sama "b" a nikoliv "bbaa", jak je tomu ve skutecnosti.

Me to tak prijde normalni. Pozadavek byl nahradit 'ba' retezcem 'a', coz 
se stalo. Ze je ten reg. vyraz takovy, ze muze generovat vysledek, ktery 
opet splnuje naroky na prave provadenou zmenu, je veci uzivatele. Ten musi 
vedet, ze je tak, a pouzit treba cyklus while. Kdyby to delal 
perl sam, pak by ho prosta zamena s/ba/ba/g uvedla do nekonecneho cyklu.

-- 
Ondrej Koala Vacha



Další informace o konferenci Perl