Hallo
Wie schon gesagt, will ich einen Ausdruck sozusagen 2 mal
ersetzen:
$message =~ s/() ([^]*) ()/g;
Also das, was in der 2. Klammer steht soll noch mal ersetzt
werden und zwar mit tr///. $2 ist ja read_only - man kann die
Variable also nicht verÀndern.
Wie lÀsst sich das lösen?
Moritz hat ja eine (imho zu komplizierte) Variante
angegeben, ich wĂŒrde es aber möglicherweise einfacher
machen (ich bin nicht sicherm ob Moritzâ Variante
in /g bei StringlĂ€ngenverĂ€nderung ĂŒberhaupt
funktioniert - kann aber durchaus sein):
...
while( $message =~ /([^/g ) {
my $p = pos $message;
substr($message, $-[1], $+[1]-$-[1]) =~ tr/a-z/A-Z/;
pos $message = $p
}
...
Normalerweise âresettedâ eine VerĂ€nderung an $message
dessen pos(), also die skalare Position des
Matchoperators. Wenn wir einfach dieses pos()
aufheben und neu angeben, funktioniert es.
Der Ausdruck substr($message, $-[1], $+[1]-$-[1]) ist
genau der Bereich, der $1 entspricht. Hier werden
die Positionsfelder @- und @+ benutzt.
GrĂŒĂe
CMĐ