Hallo,
ich bin ziemlicher Perl Neuling und habe folgendes Problem. Ich ordne einer variablen einen String mit führender 0 zu
$str = "01";
Danach füge ich $str einem Array hinzu und schreibe diesen später rekursiv in eine Datei aus. Es wird nun allerdings nur 1 und nicht 01 in die Datei geschrieben. Es sieht so aus als würde die 0 irgendwo "weggeschnitten".
Muss ich die Zeichenketten mit führender 0 anders übergeben?
Besten Dank
Julio
User since
2003-08-04
14371
Artikel
ModeratorIn
Perl kennt keinen Unterschied zwischen Strings und Zahlen. Eine "konvertierung" findet nach Kontext statt. Machst Du noch was mit der Zahl?? Weil die 0 eigentlich erhalten bleibt:
~/entwicklung 111> perl -le 'my $var = "01"; my @array = (); push(@array,$var); print $_ for(@array);'
01
erst wenn man noch mit dem Wert rechnet, geht die 0 verloren...
~/entwicklung 113> perl -le 'my $var = "01"; $var += 8; my @array = (); push(@array,$var); print $_ for(@array);'
9
User since
2005-09-08
300
Artikel
BenutzerIn
@Julio
Ich vermute mal, Du schreibst die Zahl mit printf() und dem Format %d in die Datei. Dann wird nämlich der Inhalt Deiner Variable als Zahl behandelt und die führende Null abgeschnitten. Wenn das die Ursache ist, dann solltest Du statt %d besser %s verwenden, denn dann wird der Inhalt der Variable als String behandelt und die Null bleibt dran.
Gruß, Doc\n\n
<!--EDIT|docsnyder|1153480015-->