Od perlop
Binary "< =>" zwraca -1, 0 lub 1 w zależności od tego, czy w lewo argumentem jest liczbowo mniejszy, równy lub większy niż prawy argument. Jeśli twoja platforma obsługuje wartości NaN (nie-liczby) jako wartości numeryczne , użycie ich z "< =>" zwraca undef. NaN nie jest "<", "==", ">", "< =" lub "> =" wszystko (nawet NaN), więc te 5 zwracają fałsz. NaN! = NaN zwraca true, podobnie jak NaN! = Cokolwiek innego.
Jeśli platforma nie obsługuje Nans następnie NaN to tylko ciąg z wartością liczbową 0.
NaN zachowuje się inaczej na różnych platformach. Jest w pewnym sensie numeryczny, ponieważ może działać jako taki w operacjach numerycznych. Ale tak naprawdę nie jest liczbą, ponieważ ma nieokreśloną wartość.
Ponadto jego zachowanie nie jest przenośne, jak:
perl -E "say 'yes' if 0 == 'NaN'"
może przynieść różne rezultaty na różnych platformach, chyba że używasz Perl 5.22 lub nowszej.
http://en.wikipedia.org/wiki/NaN 'NaN' jest poprawną wartością liczby zmiennoprzecinkowej, podobnie jak +/- nieskończoność. – biziclop