Recientemente escribí una nueva secuencia de comandos de Perl para eliminar procesos en función del nombre del proceso/nombre de usuario y la extendí utilizando Classes para poder reutilizar el código de proceso en otros programas. Mi disposición actual es -¿Cómo puede mi script de Perl encontrar su módulo en el mismo directorio?
/home/mutew/src/prod/pskill <-- Perl script
/home/mutew/src/prod/Process.pm <-- Package to handle process descriptions
añadí ~/src/prod en mi variable $ PATH para acceder a la secuencia de comandos desde cualquier lugar. Al ejecutar la secuencia de comandos desde cualquier directorio que no sea el residente, conduce a "No se puede localizar Process.pm en @INC" (lo que es comprensible dado que, aparte de los directorios compartidos en/usr, @INC incluye solo el directorio actual - '.'). Una solución que he estado usando es la directiva lib uso como así -
use lib '/home/mutew/src/prod';
pero esto es un problema importante la portabilidad. ¿Alguna solución que también me permita exportar el script a otros sistemas sin y sin cambios?
EDITAR
- Elegí respuesta 'depesz' como la correcta debido a su simplicidad y el núcleo uso del módulo.
- aunque la respuesta de Brian Foy sugiere otros métodos para lograr lo mismo (TMTOWTDI), su contribución en perlfaq8 hace que esta pregunta sea absolutamente redundante.
tal vez sea solo mi instalación, pero si ambos archivos están en el mismo directorio simplemente "uso FILENAME.pm". Luego "my $ newVar = PACKAGENAME-> new();" para cualquier programacion de objetos –
¡Vaya, esto debería ser mucho más fácil en Perl que esto! Facilite las cosas fáciles, etc. –