迪拉斯: Numerische und String-Werte umwandeln

Beitrag lesen

Hey,

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. Textfelder (CGI, GUI-Toolkits...) werden als Strings übergeben und nicht numerisch. Der Rest mit dem Oktalkram ist irreführend, ein Skalarwert ist nicht dasselbe wie eine Textkonstante!

Die Frage ist so auch nicht zu beantworten, weil sie schon eine falsche Annahme enthält. Es gibt (aus Sicht eines Anfängers) in Perl keine numerischen Variablen. Stattdessen benutzt man einfach einen Skalar in numerischem Kontext (z.B. Rechenoperation). Um die führenden Nullen aus ästhetischen Gründen zu entfernen, einfach 0 zum Skalar addieren.

Wie funktioniert das umgekehrt, wenn ich aus einer Zahl in einer Variabe mit dem Wert 3 in ein String mit drei Stellen in "003" und 12 in "012" umwandeln möchte?
$a = sprintf '%.3d', 3;

Das Flag . dient zur Rundung. Man benutzt 0 für führende Nullen. Außerdem ist $a ein ganz schlechter Variablenname, da reserviert für sort. Besser:
my $withleadingzeroes = sprintf '%03d', 3;

--
水-金-地-火-木-土-天-海-冥