Thread replace nth occurence: Code verstehen (16 answers)
Opened by Student87 at 2013-03-10 11:04

pq
 2013-03-10 12:06
#166298 #166298
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
$s =~ s/(sneak)/ ++$i == $n ? $repl : $1 /eg;

es gibt da kein geteilt durch.

das ist eine substitution:
s/ ... / ... /eg;

das /eg steht für: e wie eval, und g wie globally.
eval bedeutet hier, dass die rechte seite der substitution als ersetzungscode angesehen wird, nicht nur als string.
d.h. der code ++$i == $n ? $repl : $1 wird bei jeder ersetzung ausgeführt.

das mit dem fragezeichen ist eine verkürzung von if/else:
++$i == $n ? $repl : $1
gleich
if (++$i == $n) { $repl } else { $1 }

lies mal Perldoc:perlop
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 replace nth occurence: Code verstehen