Hallo
wenn in einem Textfel der Wert "012" oder "003" enthalten ist, wie bekomme ich diesen Wert in eine Numerische Variable ohne die führenden Nullen, sle 12 und 3?
das macht Perl bei Bedarf automatisch
nein, tut's nicht.
tut mir leid, dass die von mir verlinkte Dokumentation, perldoc, fehlerhaft ist. Ich sah diese immer als Referenz an und zitiere:
Zitat: (Quelle: perldoc oct)
Although perl will automatically convert strings into numbers as needed,
this automatic conversion assumes base 10.
was genau das vom OP gewünschte Verhalten ist. Genau aus diesem Grund habe ich auf genau diesen Ausschnitt der Doku verwiesen.
Um die führenden Nullen aus ästhetischen Gründen zu entfernen, einfach 0 zum Skalar addieren.
Ja, nichts anderes stand sinngemäß in meinem Posting. Mit einem hübschen Verweis zur Doku.
$a = sprintf '%.3d', 3;
Das Flag.
dient zur Rundung.
Weitere Korinthe gefällig:
Das Flag .
dient zur Angabe der Genauigkeit.
Und
Zitat: (Quelle: perldoc sprintf)
For integer conversions, specifying a precision implies that the
output of the number itself should be zero-padded to this width:
Ich verwendete gezielt eine Integer. Ich verwies gezielt auf die Doku.
Außerdem ist $a ein ganz schlechter Variablenname, da reserviert für
sort
.
Da habe ich noch ein paar Korinthen zuzugeben:
$a ist ein so schlechter Variablenname, dass er in der perldoc zu sprintf selbst verwendet wird, siehe http://perldoc.perl.org/functions/sprintf.html#order-of-arguments :-)
Besser:
my $withleadingzeroes = sprintf '%03d', 3;
Ach, ich gebe Dir ja recht.
Grüße
Vinzenz