Hi Leute,
ich habe ein Array, das Strings und Inter enthaelt das ich gerne sortieren moechte. Ich habe:
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
35
36
#!/usr/bin/perl -w
use strict;
my @argA = ('hallo', 3, 'Hallo', "", 22, "das war's" );
print "Unsortiert\n";
for (0..5) {
if(defined $argA[$_]) {
print "$_=$argA[$_] <\n";
}
else {
print "$_ ist undefiniert\n";
}
}
@argA = sort @argA;
print "\nSortiert, lexikalisch\n";
for (0..5) {
if(defined $argA[$_]) {
print "$_=$argA[$_] <\n";
}
else {
print "$_ ist undefiniert\n";
}
}
@argA = sort {$a <=> $b} @argA;
print "\nSortiert, numerisch aufsteigend\n";
for (0..5) {
if(defined $argA[$_]) {
print "$_=$argA[$_] <\n";
}
else {
print "$_ ist undefiniert\n";
}
}
Als Ergebnis des ganzen erhalte ich
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
Unsortiert
0=hallo <
1=3 <
2=Hallo <
3= <
4=22 <
5=das war's <
Sortiert, lexikalisch
0= <
1=22 <
2=3 <
3=Hallo <
4=das war's <
5=hallo <
Argument "" isn't numeric in ncmp at yy.pl line 27.
Argument "Hallo" isn't numeric in ncmp at yy.pl line 27.
Argument "das war's" isn't numeric in ncmp at yy.pl line 27.
Argument "hallo" isn't numeric in ncmp at yy.pl line 27.
Sortiert, numerisch aufsteigend
0= <
1=Hallo <
2=das war's <
3=hallo <
4=3 <
5=22 <
Vom Prinzip her gefaellt mir die numersch aufsteigende Sortierung am besten, nur die Fehlermeldungen sind halt Mist. Eine Sortierung die alles was an Integern im Array ist nurmerisch auf- bzw. absteigend sortiert, die Strings aber lexikalisch waere klasse. Wenn ich dabei noch festlegen koennte ob Integer vor Strings (oder andersherum) im Ergebnis landen sollen waere das erste Sahne, wobei das fuer mich/meine Anwendung eher ein Goodie waere.
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2