Siechfred: was bedeutet <=> ?

Beitrag lesen

Привет Alain.

Sag mal, ist das deine Lebensaufgabe, antiquierte Scripte zum fehlerfreien Laufen zu bringen? ;-)

Ich weiss auch nicht genau wo oder auf was $a oder $b sich bezieht

Wie Vinzenz schrieb, auf die zwei nebeneinander liegenden Werte, $a ist dabei der aktuelle, $b der folgende Wert (siehe Perldoc: sort).

http://www.tramplefun.com/neu/smart.txt

Dort wird ein Hash %shipping nach seinen Schlüsseln aufsteigend sortiert und das Ergebnis in den Array @prices geschrieben:

@prices = sort number keys %shipping;

number ist dabei die Referenz auf eine Sortierfunktion, man könnte auch gleich schreiben:

@prices = sort {$a <=> $b} keys %shipping;

http://www.tramplefun.com/neu/smartcfg.txt

Und da ist der Übeltäter, nämlich dieser ominöse Hash (siehe auch perldata):

%shipping = ("",'0.00','1','5.00','3','10.00','5','15.00','7','20.00','10','30.00');

Du siehst, alles Strings, ergo muss bei Verwendung von '<=>' ein Fehler kommen. Warum der Shop trotzdem funktioniert, musst du jetzt aber selber recherchieren :)

Дружба!
Siechfred

--
Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.