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