serruxa escribiste:Hola soy nueva en esto de perl, a ver si me podeis ayudar. Tengo dos clases, una productos.pm y otra conexion.pm, que estan en el directorio "clases" cuando estas clases las voy a utilizar en el main, pongo use clases::productos;
use clases::conexion;
y cuando creo el objeto pongo:
$objProducto = clases::productos->new();
pero al hacer esto me da el siguiente error:
Can't locate object method "new" via package "clases::productos" (perhaps you forgot to load "clases::productos"?)
Alguien puede ayudarme Graciasssss
Bueno hay un comentario cierto, que hizo monoswim, por cada nombre que anteceda a '::' significa que debes crear un directorio que represente jerarquicamente a una clase. Pero eso sólo aplica si formalmente quieres definir una clase en un archivo independiente, porque recordemos que podemos definir clases aún en tiempo de ejecución, en fin otro tópico.
Ahora bien lo que '::' significa no es un 'directorio', sino el comienzo de una jerarquía, o simplemente un 'espacio de nombres'.
Creo que en tu caso el problema es que clases::productos no está definido, y puede ser por varios motivos:
1) Como se mencionó debe existir el directorio clases el cual contendrá los archivos conexion.pm, productos.pm, o en caso de que esten definidas todas en el mismo archivo, debes especificar correctamente el espacio de nombres.
2) Tus clases no se encuentran en @INC (
perldoc -q @INC ).
Saludos,