Schrift
[thread]6416[/thread]

/o Modifikator (Seite 2)



<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
Gast Gast
 2004-07-20 19:23
#84635 #84635
[quote=pq,20.07.2004, 16:57]fällt mir gerade ein: wahrscheinlich würde ich stattdessen gleich den
qr-operator verwenden:
my $seperator = qr/:/;
dann braucht man die /o-option auch nicht mehr.[/quote]
Kann ich im Moment nicht so ganz exakt beurteilen ...
aber im ersten Ansatz sieht es so aus als würde
$pattern = qr/$var/
nicht undedingt die Mehrfach-Compilierung innerhalb von
@array = split /$pattern/, $string;
verhindern - muß ich mal testen.
pq
 2004-07-20 19:37
#84636 #84636
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
mach ein print qr/$var/, dann siehst du es.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2004-07-20 20:21
#84637 #84637
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Siehe auch hier fuer einen Benchmark.
Gast Gast
 2004-07-20 21:50
#84638 #84638
[quote=pq,20.07.2004, 17:37]mach ein print qr/$var/, dann siehst du es.[/quote]
Ja - das ist schon klar ...
aber derzeit denke ich immer noch dass ein
$pattern = qr/$var/;
und ein darauf folgendes
@array = split /$pattern/, $string;
also die Kombination von beiden; nicht dazu führt das $pattern innnerhalb einer wie auch immer gearteten Schleife, nur einmal Compiliert wird - wie gesagt, hab's noch nicht getestet.
esskar
 2004-07-20 23:57
#84639 #84639
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Dieter,20.07.2004, 19:50]wie gesagt, hab's noch nicht getestet.[/quote]
und wie kommst du darauf?
ich kenn mich mit qr und /o nicht wirklich aus; deswegen frag ich!
Gast Gast
 2004-07-21 00:28
#84640 #84640
[quote=esskar,20.07.2004, 21:57][quote=Dieter,20.07.2004, 19:50]wie gesagt, hab's noch nicht getestet.[/quote]
und wie kommst du darauf?
ich kenn mich mit qr und /o nicht wirklich aus; deswegen frag ich![/quote]
Naja - irgendwie aus logischen Gesichtspunkten heraus.
mit qr/*/ wird ein Pattern escaped.
Warum dann die aus dem qr entstehende Variable innerhalb einer regex Syntax nur einmal compiliert werden sollte, kann ich derzeit nicht so richtig nachvollziehen - weil es ja eine Variable ist.
steffenw
 2004-07-21 00:55
#84641 #84641
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
$pattern = qr/$var/;
# alternative Schreibweise:
@array = split /$pattern/, $string;
# oder
@array = split $pattern, $string;

Ich glaube die 2. Schreibweise verdeutlicht, daß $pattern nicht einfach ein Text ist, der zum regulären Ausdruck wird, sondern daß $pattern der reguläre Ausdruck bereits ist.
$SIG{USER} = sub {love 'Perl' or die};
Gast Gast
 2004-07-21 01:32
#84642 #84642
[quote=steffenw,20.07.2004, 22:55]
Code: (dl )
1
2
3
4
5
$pattern = qr/$var/;
# alternative Schreibweise:
@array = split /$pattern/, $string;
# oder
@array = split $pattern, $string;

Ich glaube die 2. Schreibweise verdeutlicht, daß $pattern nicht einfach ein Text ist, der zum regulären Ausdruck wird, sondern daß $pattern der reguläre Ausdruck bereits ist.[/quote]
ist schon klar ...
aber Deinem Beispiel folgend, ist dann
@array = split /$pattern/o, $string;
immer noch wirksam (/o meine ich) oder wird $pattern sowieso nur einmal compiliert (innerhalb einer Schleife) weil bereits per qr evaluiert.

Bei Deinem 2. Beispiel stellt sich mir die Frage:
was passiert wenn ich
@array = split $pattern, $string;
innerhalb einer Schleife einsetze; wird $pattern bei jedem Schleifendurchlauf erneut evaluiert?
pq
 2004-07-21 02:37
#84643 #84643
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
steht eigentlich alles mehr oder weniger in perlop.pod. neben anderen
nützlichen infos steht da u.a.:
qr/STRING/imosx
              This operator quotes (and possibly compiles) its
              STRING as a regular expression.
[...]
              Precompilation of the pattern into an internal
              representation at the moment of qr() avoids a need
              to recompile the pattern every time a match
              "/$pat/" is attempted.

also es wird nicht jedesmal neu kompiliert.
gute nacht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gast Gast
 2004-07-21 02:44
#84644 #84644
[quote=pq,21.07.2004, 00:37]steht eigentlich alles mehr oder weniger in perlop.pod. neben anderen
nützlichen infos steht da u.a.:
   qr/STRING/imosx
              This operator quotes (and possibly compiles) its
              STRING as a regular expression.
[...]
              Precompilation of the pattern into an internal
              representation at the moment of qr() avoids a need
              to recompile the pattern every time a match
              "/$pat/" is attempted.

also es wird nicht jedesmal neu kompiliert.
gute nacht.[/quote]
Arghhh - hätte ich ja auch mal lesen können ...
Danke für den Hinweis pq :)
(aber vielleicht hilft es ja jemandem der diesen Thread liest)
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2004-07-20 14:20.