Estoy usando mod_perl2 y quiero reutilizar unas subrutinas que tengo en 'perl_functions.pl'. Me aparece el siguiente error,
- Código: Seleccionar todo
Can't locate perl_functions.pl in @INC
La configuración de httpd.conf es la siguiente:
- Código: Seleccionar todo
LoadModule perl_module modules/mod_perl.so
PerlSwitches -wT
PerlPostConfigRequire /usr/local/apache2/htdocs/www/p_scripts/perl-cgi/startup.pl
PerlSwitches -I/usr/local/apache2/htdocs/www/p_scripts/perl-cgi/
<Directory "/usr/local/apache2/htdocs/www/p_scripts/perl-cgi/">
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
El fichero startup.pl contiene lo siguiente:
- Código: Seleccionar todo
#!/usr/bin/perl -w
use strict;
# to use other libraries in other @INC path
# use lib qw(/absolute/path/);
use lib qw(/usr/local/apache2/htdocs/www/p_scripts/perl-cgi/);
# preload all mp2 modules
# use ModPerl::MethodLookup;
# ModPerl::MethodLookup::preload_all_modules();
use ModPerl::Util (); #for CORE::GLOBAL::exit
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::ServerRec ();
use Apache2::ServerUtil ();
use Apache2::Connection ();
use Apache2::Log ();
use APR::Table ();
# use ModPerl::Registry ();
use Apache2::Const -compile => ':common';
use APR::Const -compile => ':common';
1;
En el fichero desde el que se llama a 'perl_functions.pl' tengo al principio lo siguiente:
- Código: Seleccionar todo
#!/usr/bin/perl
#push (@INC, '.');
warn (join ("\n",@INC));
require "perl_functions.pl";
y el resultado cuando lo quiero ejecutar:
- Código: Seleccionar todo
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl/5.8.7
/usr/lib/perl5/site_perl/5.8.6
/usr/lib/perl5/site_perl/5.8.5
/usr/lib/perl5/site_perl/5.8.4
/usr/lib/perl5/site_perl/5.8.3
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl/5.8.7
/usr/lib/perl5/vendor_perl/5.8.6
/usr/lib/perl5/vendor_perl/5.8.5
/usr/lib/perl5/vendor_perl/5.8.4
/usr/lib/perl5/vendor_perl/5.8.3
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
. at ../perl-cgi/search.pl line 4.
Can't locate perl_functions.pl in @INC
at ../perl-cgi/search.pl line 5.
Todos los archivos .pl los tengo en la misma carpeta.
He probado un montón de cosas para intentar solucionarlo pero no me termina de funcionar. Sólo poniendo el path absoluto en require me funciona, pero no me sirve ya que los archivos van a cambiar de ubicación. Podéis ayudarme a solucionarlo?
Muchas gracias y un saludo.