Si se quiere garantizar que el camino en cuestión esta disponible antes de que se ejecute ninguna sentencia se puede usar una de las opciones 1 2 o 4. También podemos hacerlo rodeando la opción 3 de un BEGIN :
BEGIN { unshift @INC, "home/lhp/perl/src"; }
Cuando Perl esta en la fase de compilación y encuentra un bloque con nombre BEGIN pasa a ejecutarlo y continúa con la compilación. Puede existir mas de un bloque BEGIN en un programa, en cuyo caso se van ejecutando durante la fase de compilacion según se van viendo.
casiano@beowulf:~/src/perl$ perl -de 0 DB<1> require Data::Dumper DB<2> require "Data::Dumper" Can't locate Data::Dumper in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at (eval 18)[/usr/share/perl/5.8/perl5db.pl:628] line 2.Observe que el primer
require
no produce ninguna queja, el segundo si. Consulte
perldoc -f require
para entender este detalle.Casiano Rodríguez León