Thread Liste von Objekten sortieren: nach der Eigenschaft Datum (17 answers)
Opened by mordur at 2005-01-21 12:26

Dubu
 2005-01-21 16:29
#51141 #51141
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Im Gegensatz zu dem, was Relais erzaehlt hat ;) , ist Perl gar nicht so tolerant bei Vergleichen. Es ist aber so, dass Perl versucht, im numerischen Kontext so viel wie moeglich aus einem String als Zahl zu nehmen (sprich: alles bis zum ersten Nicht-Ziffernzeichen) und diese Zahl dann benutzt. Ein String wie "2005-01-01" ergibt im numerischen Kontext also 2005:
Code: (dl )
1
2
3
> perl -Mwarnings -Mstrict -le 'my $x = "2005-01-21"; print($x+1);'
Argument "2005-01-21" isn't numeric in addition (+) at -e line 1.
2006

Man beachte die 2006 in der Ausgabe, hinter der Warnung.

Wenn man also <=> statt cmp benutzt, werden bei deinen Daten nur die Jahre sortiert, innerhalb eines Jahres ist die Reihenfolge zufaellig (wie sie sich im Sortierablauf ergibt):
Code: (dl )
1
2
3
4
> perl -Mwarnings -Mstrict -le 'my $x = "2005-01-21"; my $y = "2005-01-22"; print($x <=> $y);'
Argument "2005-01-22" isn't numeric in numeric comparison (<=>) at -e line 1.
Argument "2005-01-21" isn't numeric in numeric comparison (<=>) at -e line 1.
0

Wie die Ausgabe 0 zeigt, sind fuer Perl beide Werte als Zahl gleich gross.

View full thread Liste von Objekten sortieren: nach der Eigenschaft Datum