perl return-value perl-module

¿Por qué el 1 al final de cada paquete de Perl?



return-value perl-module (4)

Si olvida el 1 al final de un paquete, Perl le dice "El paquete no devolvió un valor verdadero". Bueno, si sabe que lo olvidaste, ¿por qué no lo dejaste allí para ti?


1;

Cuando se carga un módulo (a través del uso) el compilador se quejará a menos que la última instrucción ejecutada cuando se carga sea verdadera. Esta línea asegura que este sea el caso (siempre y cuando no coloque ningún código después de esta línea). Es la forma de Perl de asegurarse de que se haya analizado correctamente hasta el final del archivo.

Ver http://mathforum.org/~ken/perl_modules.html

Puede usar cualquier declaración que se evalúe como verdadera. 1 acaba de pasar a convertirse en un idioma perl.


Desde el módulo Perl de wikipedia :

A Perl module must end with a true value or else it is considered not to have loaded. By convention this value is usually 1 though it can be any true value. A module can end with false to indicate failure but this is rarely used and it would instead die() (exit with an error).


Un paquete puede devolver un valor falso si no se inicializa, por ejemplo, si no pudo encontrar un archivo de datos requerido o una biblioteca externa. De esta forma, falla limpiamente en el momento de la carga (y esta falla incluso puede ser probada) en lugar de impredeciblemente más tarde.


Debido a que los módulos Perl deben devolver un valor para indicar si la directiva require debe tener éxito (se devuelve el valor verdadero) o no (se devuelve el valor falso, esto puede tener sentido si el módulo no se inicializa por algún motivo).

Si no devuelve nada, el intérprete no puede saber si el require debe tener éxito o no; al mismo tiempo, dado que es fácil olvidarse de poner el valor verdadero al final del paquete, sugiere la "solución común" para este error: agregue un valor verdadero como retorno.

Para alguna otra información / folclore sobre el valor de retorno de los módulos, eche un vistazo a esta pregunta .