Alain: was bedeutet <=> ?

Beitrag lesen

hallo Siechfred,

Привет Alain.

»»

lernst Du russisch :)

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

naja sagen wir mal so,ich interessiere mich eben noch für alte
(gibt ja keine vernüftigen neue->oder aber ich habe tomaten auf den augen)
scripts und halt eben perl :)

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

ja hab mir mal angesehen,brachte aber nicht viel jedenfalls nicht mit {$a <=> $b}

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

aha

@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;

hmmm,das dacht ich mir,aber die sub kann doch nicht nur mit "number" aufgerufen werden?

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');

nach perl doc hab ichs mal so
my %shipping = ('0' => '0.00','1' => '5.00','3' => '10.00','5' => '15.00','7' => '20.00','10' => '30.00');
versucht,aber kein grosser erfolg gehabt,jedoch jetzt gehts auch ohne den <=> sub was mir nun auch keinen error mehr verursacht-keine ahnung warum das jetzt so geht.
habe den unteren teil noch so

if (($itemquant)and($itemquant >= 1)) {
local($low,@prices,$price);
my $price = '5'||'';
@prices = sort keys %shipping;
$low = $prices[0];
foreach $price (@prices) {
if (($price > $low) && ($price <= $totalquant)) {$low = $price};
}
$shipamt = $shipping{$low};
$totalprice += $shipamt............

abgeändert.Komisch so geht alles ohne fehler im errorlog.

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

ja das hab ich ,aber mit hashes hab ich da so meine probleme.
Gut Nacht vom müden
Alain