pitanje

3 views
Skip to first unread message

Boris Shomodjvarac

unread,
Feb 18, 2010, 4:38:24 AM2/18/10
to zagr...@googlegroups.com

Ola ekipa!

jedno pitanjce, zna netko kako se kompajlira substitution regexp?

znam za:

my $re = qr[nesto nesto];

pa posle:

$input =~ $re

Ali ne mogu da nadjem dokumentaciju za substitution..

Poz,
Boris.

signature.asc

Darko Prelec

unread,
Feb 18, 2010, 4:53:25 AM2/18/10
to zagr...@googlegroups.com
Datuma 18. veljače 2010. 10:38 Boris Shomodjvarac <sho...@gmail.com>
je napisao/la:

Ista stvar, ako se ne varam:

$input =~ s/$re/$pattern/

Ivan Stojic

unread,
Feb 18, 2010, 5:01:29 AM2/18/10
to Zagreb Perl Mongers
Mislim da je najprecizniji odgovor dostupan u FAQu:

http://perldoc.perl.org/perlfaq6.html#What-is-/o-really-for?

(nisam siguran da u potpunosti razumijem odgovor, doduse)

>  signature.asc
> < 1KViewDownload

Boris Shomodjvarac

unread,
Feb 18, 2010, 5:06:30 AM2/18/10
to zagr...@googlegroups.com

{code}
#!/usr/bin/perl

use strict;
use warnings;

my $input = "lalal123";
my $re1 = qr[(\d+)];
my $re2 = qr[$1];

$input =~ s/$re1/$re2/;

print $input, "\n";
{code}

$1 je problem u ovom slucaju, i \$1 ne pomaze, perl mora da zna da je
substitution kako bih to skuzio. Inace ako se stavi nekakav staticni
string, onda dobijes rezultat jos jedan regexp compilation a ne izvrsavanje.

Boris.

signature.asc

Kost

unread,
Feb 18, 2010, 5:09:06 AM2/18/10
to Zagreb Perl Mongers
On Feb 18, 10:38 am, Boris Shomodjvarac <shom...@gmail.com> wrote:

$input =~ s/$re/$pattern/o

ovo ce kompajlirat substition samo jednom....

vise: man perlfaq6

Kost

Boris Shomodjvarac

unread,
Feb 18, 2010, 5:11:29 AM2/18/10
to zagr...@googlegroups.com

o sluzi recimo da kada si u while petlji da perl ne gleda ponovo tu
variablu koja je u regexp-u pa dobijes na brzini, tj ne provjerava je
samo prvi put je procita i dalje je ona staticna u tom istom regexpu.
Koliko sam ja skuzio.

Boris.

signature.asc

Darko Prelec

unread,
Feb 18, 2010, 5:16:47 AM2/18/10
to zagr...@googlegroups.com
2010/2/18 Boris Shomodjvarac <sho...@gmail.com>:

> my $input = "lalal123";
> my $re1 = qr[(\d+)];
> my $re2 = qr[$1];
>
> $input =~ s/$re1/$re2/;

s/regex/pattern/, pa

sa regexom? :)

Darko Prelec

unread,
Feb 18, 2010, 5:18:54 AM2/18/10
to zagr...@googlegroups.com
2010/2/18 Boris Shomodjvarac <sho...@gmail.com>:

Sori, ode mejl prije vremena.

> $input =~ s/$re1/$re2/;

s/regex/pattern/, pattern != regex

$1 nije regex u ovom slučaju..

Boris Shomodjvarac

unread,
Feb 18, 2010, 6:15:13 AM2/18/10
to zagr...@googlegroups.com

Perl nisi me izneverio :)

{code}
#!/usr/bin/perl

use strict;
use warnings;

my $input = "lalal123";
my $re1 = qr[^[^\d]+(\d+)$];
my $re2 = 'print "broj: "; $1';

$input =~ s/$re1/$re2/ee;

print $input, "\n";
{code}

output:
broj: 123

Ne moze se nikako drugacije, jer ne postoji qr za substitution, a kada
se kompajlira drugi regexp perl se zali da $1 ne postoji, ta operacija
jednostavno mora biti u s///. E sada jedini nacin da drugi pattern bude
konfigurabilan je mali eval trik :)

Inace perl 5.10, je ludilo koliko ima novih stvari sto se tice regexpa.

Boris.


signature.asc

Darko Prelec

unread,
Feb 18, 2010, 6:22:06 AM2/18/10
to zagr...@googlegroups.com
2010/2/18 Boris Shomodjvarac <sho...@gmail.com>:

> Inace perl 5.10, je ludilo koliko ima novih stvari sto se tice regexpa.

Istina, još uvijek čekam zadatak u kojem će mi te stvari i trebati :)

Boris Shomodjvarac

unread,
Feb 18, 2010, 6:22:52 AM2/18/10
to zagr...@googlegroups.com

Pardon:

#!/usr/bin/perl

use strict;
use warnings;
use locale;

my $input = "lalal123";
my $re1 = qr[^[^\d]+(\d+)$];

my $re2 = '"broj: $1"';

signature.asc
Reply all
Reply to author
Forward
0 new messages