fork download
  1. #!/usr/bin/perl
  2.  
  3. # Idiom #285 Set variable to NaN
  4.  
  5. use feature 'say';
  6.  
  7. # built-in support (use POSIX not needed))
  8. my $a = 'nan';
  9.  
  10. say $a;
  11. # prints string value: nan
  12.  
  13. say ( 0 + $a );
  14. # prints numeric value: NaN
  15.  
  16. say '$a string value is ' . $a;
  17. say '$a numeric value is ' . (0+$a);
  18.  
  19. say '-' x 20;
  20.  
  21. # POSIX module provides additional control
  22. use POSIX qw(:nan_payload nan isnan issignaling getpayload);
  23.  
  24. say isnan($a) ? 'true' : 'false';;
  25. # prints true
  26.  
  27. say $a == $a ? 'true' : 'false';
  28. # prints false because NaN does not equal NaN
  29.  
  30. say issignaling($a) ? 'true' : 'false';
  31. # prints false because $a is non-signaling
  32.  
  33. my $b = nan(999); # set to signaling NaN by adding a payload
  34.  
  35. say $b;
  36. # prints NaN
  37.  
  38. say getpayload($b);
  39. # prints 999
  40.  
Success #stdin #stdout 0.02s 7256KB
stdin
Standard input is empty
stdout
nan
NaN
$a string value is nan
$a numeric value is NaN
--------------------
true
false
false
NaN
999