Jörk Behrends: Perl: Zahlen runden auf x dez. Stellen

Beitrag lesen

So ein Ärger aber auch. Da ist mir jetzt glatt noch ein Fehler beim eintippen unterlaufen:

$test =~ s/.(\d{0,2})\d*/substr(".${1}00",0,3)/e;
   Um die Nachkommastellen mit Nullen aufzufüllen

$test =~ s/(.(\d{0,2})\d*)?$/substr(".${1}00",0,3)/e;
   Um auch Zahlen ohne Komma mit zwei Nachkommastellen darzustellen

Die letzte Änderung bewirkt ja, daß ich nun zwei Klammer-Paare habe :(
Dabei fällt mir gerade auf, daß ich den Punkt ja auch generell in die innere Klammer
hereinnehmen kann :). Nun gut! die Lösung ist jetzt, entweder sich auf die zweite Klammer
zu beziehen, oder aber die erste Klammer keiner Variablen zuzuweisen; Dies geschiet durch
ein "?:" welches direkt der öffnenden Klammer folgt:

$test =~ s/(?:(.\d{0,2})\d*)?$/substr("${1}00",0,3)/e;

Jörk