Thread Ergebnis einer regexp direkt verwenden (6 answers)
Opened by Gast at 2008-11-18 16:43

Gast Gast
 2008-11-19 12:13
#116393 #116393
Hallo pq,

pq+2008-11-18 17:07:35--
Code (perl): (dl )
1
2
3
printf "mein Text im Original %s\n und jetzt geändert %s", 
    $text,
    do { local $_ = $text; s/\s+//g; $_ };

So geht das also, ich hatte es ja schon mit
Code (perl): (dl )
 { ($_=$text) =~ s/\s/_/g }

versucht, in der Hoffnung, dass das mir das einblocken mit "{}" $_ als ergebnis des letzten statements liefert. "do" kannte ich bisher nicht (direkt mal das Dromedar fragen..), und auf den Trick mit dem separaten aufrufen von $_ bin ich auch noch nicht gekommen. Dafür habe ich die Zahl der gefundenen Leerzeichen bekommen :->
Jetzt frage ich mich nur, ob ich das "local" brauche, habbich bisher auch noch nicht benutzt, weil ich irgendwo gelesen habe "Ist (nur) für Leute, die wissen, was sie tun" :-]

... achso my $_ geht nicht.

pq+2008-11-18 17:07:35--
die substitution s/// ersetzt nun mal die variable selbst, deshalb musst du zwangsläufig eine kopie erstellen.

Das ist die Bestätigung, die mir gefehlt hat. Konnte das einfach nich glauben.

pq+2008-11-18 17:07:35--
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"

The violent psychopath will be likely be yourself -- Der Ingenör :-)

Vielen Dank für die Antwort,
Der Ingenör
P.S.: ich hoffe, dass ich diese Tags richtig gesetzt habe, davon habe ich nämlich noch weniger Ahnung....

View full thread Ergebnis einer regexp direkt verwenden