[Perl] Como llamo a una rutina

Salvador Ortiz Garcia sog@msg.com.mx
24 Jan 2002 11:07:29 -0600


On Thu, 2002-01-24 at 09:50, Gunnar Wolf wrote:

> >
> >    "Si ys usas 'package' est=E1s haciendo un m=F3dulo,
> >     para cargar con 'use', si no, est=E1s haciendo una biblioteca,
> >     para cargar con 'require'"
>=20
> =D3rale... Curioso... Yo uso m=F3dulos -adem=E1s de por costumbre-, prime=
ro que
> nada, porque me gusta diferenciar a ojo mis archivos - Los .pl son
> ejecutables, los .pm son m=F3dulos.

Si, es una mala costumbre que se populariz=F3 al tratar de que en NT los
ejecutables de perl pudieran arrancar solitos. Pero .pl siempre fu=E9
'perl library'. Pregunta capciosa: tus scripts en bash siempre los
marcas con .sh? =20

> con lo que, al usar require, me ahorro el import Module LIST;

Y la sobrecarga del BEGIN!

> Sin embargo... Bueno, puede que sea un poco de perversi=F3n de Perl por m=
i
> parte (o puede ser un simple caso m=E1s de TIMTOWTDI), pero yo muchas vec=
es
> incluyo algo de inicializaci=F3n en mis m=F3dulos... Por ejemplo, si teng=
o un
> m=F3dulo com=FAn a todos mis scripts en un sistemita que requiere
> autenticaci=F3n de usuario, hago la autenticaci=F3n dentro del m=F3dulo, =
con lo
> que basta con que yo indique 'use modulo' para que no tenga que
> preocuparme por autenticar usuarios... Va lo mismo para inializar
> variables, establecer la conexi=F3n a la BD, etc. antes de iniiciar la
> ejecuci=F3n de mi script.

Incluso antes de terminar la compilaci=F3n, lo que puede resultar
contraproducente.
=20
> Si estuviera usando require... Hmmm... Bueno, por convenci=F3n el require=
 se
> pone hasta arriba, as=ED que se seguir=EDa cumpliendo... Mmmmmm... Tienes
> raz=F3n, no hay mucha diferencia ;-)=20
>=20
> Bueno... Un buen punto a tomar en consideraci=F3n a futuro. Pero bueno, s=
igo
> prefiriendo los .pm a .pl para mis modulitos :)

Lo que me parece perfecto, para mis mo=F3dulos yo s=F3lo uso .pm, pero de
perlmod(1):
    =20
       Perl Modules

       A module is just a set of related functions in a library
       file, i.e., a Perl package with the same name as the file.
       It is specifically designed to be reusable by other mod-
       ules or programs.  It may do this by providing a mechanism
       for exporting some of its symbols into the symbol table of
       any package using it.  Or it may function as a class defi-
       nition and make its semantics available implicitly through
       method calls on the class and its objects, without explic-
       itly exporting anything.  Or it can do a little of both.


Saludos

Salvador Ortiz.