Thread sort für Zahlen und Strings
(8 answers)
Opened by der_thomas at 2014-01-04 13:01
Hallo,
ich habe eine Frage zur sort Funktion, dank dem Forum hier habe ich eine Möglichkeit gefunden dass mir sort unabhängig davon ob in einer Liste, Zahlen oder Strings stehen, richtig sortiert. Nachteilig ist nur dass ich mit use warnings beim zweiten Sortiervorgang die Warnmeldung bekomme dass ich versuche Stings numerisch zu sortieren. Bin nun auf die Idee gekommen temporär "no warnings" für das Sortieren zu verwenden. Ist das so ok , oder gibts da elegantere Lösungen ? Der Hintergrund ist dass ich da teils große Listen zu sortieren habe und etwaige Fehler nicht sofort bemerken kann, also schon ganz gerne gewarnt werden würde wenn "was ist", aber eben dann nicht wenn, wie am Beispiel, nichts wirklich schlimmes passiert... Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 use v5.12; #use strict; use warnings; my @testliste = ( [1,"berta"], [20,"thomas"], [11,"walter"], [1024,"adam"] ); no warnings; # unschön ?? print "unsortiert Spalte 0\n"; for my $i (0..3){ print "$testliste[$i][0]\n"; } my $spalte = 0; @testliste = sort { $a->[$spalte] <=> $b->[$spalte] || $a->[$spalte] cmp $b->[$spalte]} @testliste; print "\nsortiert nach Spalte 0 (numerische Werte)\n"; for my $i (0..3){ print "$testliste[$i][0]\n"; } print "\n\nunsortiert Spalte 1\n"; for my $i (0..3){ print "$testliste[$i][1]\n"; } $spalte = 1; @testliste = sort { $a->[$spalte] <=> $b->[$spalte] || $a->[$spalte] cmp $b->[$spalte]} @testliste; print "\nsortiert nach Spalte 1 (String inhalt)\n"; for my $i (0..3){ print "$testliste[$i][1]\n"; } use warnings; # hier sinnlos weil Programmende |