Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8114[/thread]

Sortierung selbst festlegen



<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-06-28 11:59
#67670 #67670
Guten Morgen,

die folgende Frage mag jetzt für die Meisten von euch vielleicht dumm klingen, aber ich bin noch Programmier-Anfänger :(

Wie kann ich denn in Perl mit Hilfe der sort-Funktion eine eigene Sortierreihenfolge festlegen (also nicht numerisch oder alphabetisch)?
Ich hab da schon mal nen Ausschnitt gefunden, der wie folgt aussieht:

sort ( subSortierroutine @meine_zu_sortierende_liste )

Die Frage wäre hier für mich nur, wie ich in der Subroutine meine Sortierreihenfolge festlege...ich bin da irgendwie ratlos :(

Über einen Tipp würde ich mich also sehr freuen.

Viele Grüße
Sebastian
pq
 2006-06-28 12:28
#67671 #67671
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
kennst du zufällig perldoc?
aus perldoc -f sort:
Code: (dl )
1
2
3
4
5
# sort using explicit subroutine name
sub byage {
   $age{$a} <=> $age{$b};  # presuming numeric
}
@sortedclass = sort byage @class;

perldoc -q sort (-q steht für faq) hält ebenfalls beispiele für dich bereit, falls
es mal etwas komplexer werden soll.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sid burn
 2006-06-28 17:10
#67672 #67672
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=pq,28.June.2006, 10:28]kennst du zufällig perldoc?
aus perldoc -f sort:
Code: (dl )
1
2
3
4
5
# sort using explicit subroutine name
sub byage {
$age{$a} <=> $age{$b}; # presuming numeric
}
@sortedclass = sort byage @class;

perldoc -q sort (-q steht für faq) hält ebenfalls beispiele für dich bereit, falls
es mal etwas komplexer werden soll.[/quote]
Sofern man das über Perldoc verstehen kann, ich glaube ich hätte den Sinn dahinter so nicht verstanden.

------

sort erwartet entweder ein Coderef oder einen Block der ausgeführt wird. Es werden immer zwei Elemente aus dem Array genommen die danach in der variablen $a und $b stehen.

Es wird der Coderef ausgeführt und wenn die Funktion -1 zurück gibt wird $a vor $b sortiert. Gibt die Funktion 0 zurück sind beide Werte identisch, also reihenfolge kann beliebig sein. Und gibt die Funktion +1 zurück, dann muss $b vor $a einsortiert werden.

sort { $a cmp $b } @liste;

ist also das selbe, als würdest du nur "sort" schreiben.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Strat
 2006-06-29 19:46
#67673 #67673
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
In der "Einfuehrung in Perl" auf meiner Homepage unter Vortraege gibt's auch ein ganzes Kapitel ueber Sortierungen... und auf meiner HP unter Perl habe ich auch mal was zu sortierungen geschrieben; vielleicht helfen dir diese beiden sachen weiter; wenn nicht, frag einfach\n\n

<!--EDIT|Strat|1151596064-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2006-07-03 16:52
#67674 #67674
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Auf meiner Perlseite gibts auch ein paar Beispiele zu Sortierungen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2006-06-28 11:59.