Thread % Ersetzungen (16 answers)
Opened by mika at 2014-07-11 11:30

pq
 2014-07-13 01:37
#176408 #176408
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
oder kurz gesagt: der ersetzungs-string ist ein double-quoted-string.

s/\%(\%|[\w+])/$ersetzen{$1}/g bedeutet also:
matche auf qr/\%(\%|[\w+])/ und ersetze mit "$ersetzen{$1}"

damit gelten in der ersetzung alle regeln der interpolation wie in double quotes.


der /e modifier sagt stattdessen: führe den angegebenen code aus.

s/foo/bar()/e bedeutet also: matche qr/foo/ und führe folgenden code aus: bar()

der ersetzungscode wird sogar zur compile time gecheckt, also syntaxfehler führen zum abbruch des skripts.


erst /ee macht ein echtes eval:
s/foo/bar()/ee bedeutet: matche qr/foo/ und führe code eval bar() aus (also das ergebnis von bar() wird als argument fürs string-eval verwendet)
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

View full thread % Ersetzungen