Thread Zeilen einlesen und nach dritter Spalte sortieren (48 answers)
Opened by leo11 at 2008-08-14 08:06

Ronnie
 2008-08-25 11:59
#113970 #113970
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
leo11+2008-08-24 23:34:58--
1.)Die sort-Zeile geht noch nicht. Was muss man schreiben, damit ich folgendem Ergebnis ein Stück näher komme?
Zeile1;;10;;;;
Zeile2;;11;;;;
Zeile4;;20;;500;;
Zeile3;;20;;600;;
Zeile6;;20;;700;;
Zeile5;;20;;800;;
Zeile7;;30;;;;
Zeile8;;40;;;;

Code (perl): (dl )
@{$parted{'matching'}} = sort { $a->[4] <=> $b->[4] } @{$parted{'matching'}};

leo11+2008-08-24 23:34:58--
2.)Was bewirkt
return unless ref $datei_ts or not $level_ts =~ /^\d+$/;

Das erste Argument der Funktion wird darauf geprüft, ob es eine Referenz ist, das zweite Argument wird darauf geprüft, dass es eine Zahl sein muss. Trifft eines von beiden nicht zu, beendet sich die Funktion ohne irgendwas zu tun. Zumeist ist es sinnvoller an dieser Stelle die zu verwenden um lautstark zu sterben (wenn was schiefgeht).
leo11+2008-08-24 23:34:58--
3.)wie funktioniert
unless (@{$parted{'matching'}}) {
push @{$parted{'before'}}, $zeile;
} else {
push @{$parted{'after'}}, $zeile;
}
Das push verstehe ich, aber die Bedingung für unless ist mir unklar. Was gibt die den zurück? True/false o.ä.? Und wieso?

Kann man beinahe wörtlich übersetzen:
Code: (dl )
1
2
3
4
solange noch nichts gefunden wurde, was dem Suchkriterium entspricht
füge Zeile in die Ergebnissliste "before" ein,
ansonst
füge Zeile in die Ergebnissliste "after" ein.


Ein Array - und um nix anderes geht es hier, auch wenn es aufwendig dereferenziert wird - gibt im skalaren Kontext (im Gegensatz zum Listenkontext) seine Länge zurück. Solange nix drin ist, ist die Länge Null und die Bedingung wird als FALSE ausgewertet.

View full thread Zeilen einlesen und nach dritter Spalte sortieren