Thread % Ersetzungen
(16 answers)
Opened by mika at 2014-07-11 11:30
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: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |