Recentemente ho scritto un nuovo script Perl per uccidere i processi in base al nome del processo/nome utente e lo ho esteso utilizzando Classes in modo da poter riutilizzare il codice di processo in altri programmi. Il mio layout corrente è -Come può il mio script Perl trovare il suo modulo nella stessa directory?
/home/mutew/src/prod/pskill <-- Perl script
/home/mutew/src/prod/Process.pm <-- Package to handle process descriptions
ho aggiunto ~/src/prod nella mia variabile $ PATH per accedere allo script da qualsiasi luogo. L'esecuzione dello script da qualsiasi directory diversa dalla sua directory residente porta a "Impossibile trovare Process.pm in @INC" (che è comprensibile dato che oltre alle directory condivise in/usr, @INC include solo la directory corrente - ''). Una soluzione alternativa che ho utilizzato è la direttiva use lib in questo modo -
use lib '/home/mutew/src/prod';
ma questo è un problema di portabilità principale. Qualche soluzione che mi consenta anche di esportare lo script su altri sistemi senza e modifiche?
EDIT
- ho scelto risposta 'depesz' come quella corretta per la sua semplicità e nucleo uso del modulo.
- La risposta di brian d foy suggerisce però altri metodi per realizzare lo stesso (TMTOWTDI), il suo contributo in perlfaq8 rende questa domanda assolutamente ridondante.
forse è solo la mia installazione, ma se entrambi i file si trovano nella stessa directory, semplicemente "uso FILENAME.pm". Quindi "my $ newVar = PACKAGENAME-> new();" per qualsiasi programmazione di oggetti. –
Wow, questo dovrebbe essere molto più facile in Perl di questo! Semplifica le cose, ecc. –