Thread sort für Zahlen und Strings (8 answers)
Opened by der_thomas at 2014-01-04 13:01

der_thomas
 2014-01-04 13:01
#172829 #172829
User since
2013-09-07
158 Artikel
BenutzerIn
[default_avatar]
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

View full thread sort für Zahlen und Strings