qw() es el operador que agrupa palabras y las devuelve como lista de valores. En el ejemplo, solo hay una palabra:
fatalsToBrowser.
En el caso de las palabras
:DEFAULT y
:flock, lo más seguro es que no se refieran a funciones, sino a etiquetas, cada una de ellas representando a un conjunto de funciones. Podríamos pensar en que estamos importando algo así como un espacio de nombres, pero no es lo mismo. Cada etiqueta agrupa una serie de funciones y variables que importamos de golpe a nuestro programa. Así no hay que especificar cada función y cada variable/constante por separado.
Y para
tempfile y
tempdir, se ve que también son funciones, y se importan las dos. El uso de los delimitadores '/' en lugar de '()' es porque Perl permite que algunos operadores admitan distintos delimitadores. Cada programador usa los que le parecen más 'bonitos' (también hay algunos delimitadores con funciones especiales).
El
1; final se coloca al final de los módulos, para ser devuelto al programa principal, cuando en éste se usan los '
use'.
No entiendo porqué necesitas saber qué valores te devuelve cada módulo. Es un valor que ocurre solo en el momento de la carga, interpretación e inicialización del módulo.
Ejemplo. Tenemos un módulo así:
Using perl Syntax Highlighting
package MiModulo
;
sub mi_funcion
{
my $argumento = shift;
print "$argumento : ", $argumento*2, "\n";
}Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
y un programa que lo usa, así:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict
;
use warnings
;
use diagnostics
;
use MiModulo
;
print MiModulo
::mi_funcion(2
);Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Como ves, el módulo solo es un contenedor de funciones.
Si ejecutamos nuestro programa, sale:
- Código: Seleccionar todo
MiModulo.pm did not return a true value at ./kk.pl line 6.
BEGIN failed--compilation aborted at ./kk.pl line 6 (#1)
(F) A required (or used) file must return a true value to indicate that
it compiled correctly and ran its initialization code correctly. It's
traditional to end such a file with a "1;", though any true value would
do. See perlfunc/require.
Uncaught exception from user code:
MiModulo.pm did not return a true value at ./kk.pl line 6.
BEGIN failed--compilation aborted at ./kk.pl line 6.
at ./kk.pl line 6
que quiere decir:
- Código: Seleccionar todo
MiModulo.pm no devolvió un valor verdadero en ./kk.pl línea 6.
BEGIN falló--compilación abortada en ./kk.pl línea 6 (#1)
(F) Un fichero requerido (o usado) debe regresar un valor verdadero para indicar que
se compiló correctamente y se ejecutó su código de inicialización correctamente. Es
tradicional terminar un fichero así con un "1;", aunque cualquier valor verdadero
servirá. Ver perlfunc/require.
Excepción inesperada desde el código de usuario:
MiModulo.pm no devolvió un valor verdadero en ./kk.pl línea 6.
BEGIN falló--compilación abortada en ./kk.pl línea 6.
en ./kk.pl línea 6
Bueno, pues al módulo le ponemos un '1;' final, y ahora ya sale lo esperado:
- Código: Seleccionar todo
2 : 4
Si en el módulo, en cambio, hubiera existido un bloque BEGIN{}, y, al ejecutarse, la última instrucción fuera positiva, también hubiera valido, por lo que sería necesario poner el
1; final.