Ista stvar, ako se ne varam:
$input =~ s/$re/$pattern/
http://perldoc.perl.org/perlfaq6.html#What-is-/o-really-for?
(nisam siguran da u potpunosti razumijem odgovor, doduse)
> signature.asc
> < 1KViewDownload
{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.
$input =~ s/$re/$pattern/o
ovo ce kompajlirat substition samo jednom....
vise: man perlfaq6
Kost
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.
s/regex/pattern/, pa
sa regexom? :)
Sori, ode mejl prije vremena.
> $input =~ s/$re1/$re2/;
s/regex/pattern/, pattern != regex
$1 nije regex u ovom slučaju..
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.
Istina, još uvijek čekam zadatak u kojem će mi te stvari i trebati :)