¿Hay una constante inf en Perl?
infinity (2)
Estoy inicializando una lista con infinitos para un algoritmo. Escribir $x = 9**9**9 es intuitivo y, además, es posible que desee utilizar BigInt en el futuro. 1/0 lanza un error.
¿Cuál es la forma canónica de inf ?
He usado bigrat para hacer esto. Es difícil decir qué características está habilitando -E.
use bigrat;
use feature qw(say);
say inf + inf;
say 9**99 / -inf(); #Perl doesn''t always like "-inf" by itself
use bigrat; Ha existido durante mucho tiempo, por lo que debería ser bastante portátil.
Puedes usar la cadena especial "inf" :
perl -E''say "inf" + 1''
inf
perl -E''say 1 / "inf"''
0
etcétera.
Otras cadenas especiales incluyen +inf , -inf , nan . Por supuesto, esto también funciona con pragmas bignum o bigint . Sin embargo, estos pragmas exportan funciones equivalentes inf y NaN para que pueda usar palabras clave.
Editar
Como señaló @ikegami, no parece haber una manera portátil de lograr infinitos verdaderos sin un módulo. Acabo de vadear este interesante hilo de perlmonks , pero no se vuelve menos confuso. Quizás la mejor solución sería aceptar la penalización de rendimiento y use big{num,int,rat} desde el principio, pero no big{num,int,rat} usar no big{num,int,rat} en ámbitos donde no sean necesarios.