Thread Code Verkürzen? (12 answers)
Opened by Froschpopo at 2006-03-02 02:32

Dubu
 2006-03-02 22:41
#63381 #63381
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Froschpopo,02.03.2006, 17:38]warum darf man denn $month nicht als "04" übergeben?
[/quote]
Das habe ich doch gar nicht gesagt.
Du sollst nur die Zahlkonstanten im Programm nicht mit Null anfangen lassen. Das bezieht sich auf die 101, 120, 219 etc. die in den Vergleichen benutzt werden.

Quote
Die nachstehende rechnung macht daraus doch sowieso eine einheitliche zahl: my $md = $month*100+$day;

da wird doch 03 automatisch zu 3, oder etwa nicht?

Bei 03 und 3 macht es tatsächlich keinen Unterschied.
Aber man schaue sich das an:
Quote
~> perl -le 'my $var = "011"; print 0+$var'
11
~> perl -le 'my $var = 011; print 0+$var'
9

Hoppla!
Wenn ein String als Zahl interpretiert wird, dann als Dezimalzahl, auch wenn er mit Null anfängt. "Wörtliche" Zahlen im Quelltext werden aber als Oktalzahlen interpretiert, wenn sie mit einer Null anfangen.
(Aber man sollte natürlich keine Zahlkonstanten als String schreiben, wenn es nicht nötig ist.)

Wenn in einer vorgeblichen Oktalzahl Ziffern größer 7 auftauchen, tritt Perl auch sofort auf die Bremse:
Code: (dl )
1
2
~> perl -le 'my $var = 09; print $var'
Illegal octal digit '9' at -e line 1, at end of line


Ansonsten geht Perl aber gnadenlos davon aus, dass man wirklich meint, was man schreibt.

View full thread Code Verkürzen?