[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.