Hi, I have a problem using Time::Piece with mod_perl.
If Time::Piece is loaded on startup, either by startup.pl, in PerlModule, or by being used in another module. It appears in %INC. In a cgi-perl script running under Apache::Registry: 'use Time::Piece' does not cause the file to be re-read. %Time::Piece:: is full of values, including %Time::Piece::import. The use of any Time::Piece function or method falls back to AutoLoader, which tries to load the <function>.al file. The interpreter cannot find the <function>.al file, and issues a fatal error. I tested with another module (Data::Dumper) and it did not have the same problem. It still works if it's loaded by the cgi-perl script, either directly or by another file. The versions are: Time::Piece v 1.08, perl v 5.6.0, apache v1.3.31. Time::Piece itself is a useful little module. It overloads (via globbing) gmtime and localtime, but I get the same result if I avoid that by calling use Time::Piece() in the startup script and Time::Piece->new in the test script. This is the section of Time::Piece which isn't a variable, constant, or subroutine definition: #------------------------------------------------------------cut-------- ------------------------------------------------------ package Time::Piece; use strict; use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS); require Exporter; require DynaLoader; use Time::Seconds; use Carp; use Time::Local; use UNIVERSAL qw(isa); @ISA = qw(Exporter DynaLoader); @EXPORT = qw( localtime gmtime ); %EXPORT_TAGS = ( ':override' => 'internal', ); $VERSION = '1.08'; bootstrap Time::Piece $VERSION; #------------------------------------------------------------cut-------- ------------------------------------------------------ This is startup.pl: #------------------------------------------------------------cut-------- ------------------------------------------------------ #!/opt/bin/perl # modify the include path to include directory containing our mod_perl scripts BEGIN { # use Apache(); use lib '/usr/local/apache_1.3.31/mod-perl'; use lib '/home/ianm/lib/site_perl/5.6.1'; use lib '/home/ianm/lib/perl5/site_perl/5.6.1'; #use lib '/home/ianm/lib/site_perl/5.6.1/sun4-solaris'; } # load modules use Time::Piece; use Data::Dumper(); 1; This is test.pl: #!/opt/bin/perl-5.6.1 use warnings; use Data::Dumper; print "Perl version = $]<br/>"; print "Process = " . $$ . '<br/>'; print Data::Dumper::Dumper(\%INC); # This works. use Time::Piece (); warn Dumper(\%INC); # This fails. Time::Piece->import; 1; #------------------------------------------------------------cut-------- ------------------------------------------------------ This is the error message: #------------------------------------------------------------cut-------- ------------------------------------------------------ [Mon Jan 17 11:29:18 2005] [notice] Apache/1.3.31 (Unix) mod_perl/1.29 configured -- resuming normal operations [Mon Jan 17 11:29:18 2005] [info] Server built: Nov 3 2004 20:46:35 [Mon Jan 17 11:29:18 2005] [notice] Accept mutex: fcntl (Default: fcntl) $VAR1 = { 'Exporter.pm' => '/opt/lib/perl5/5.6.1/Exporter.pm', 'Carp.pm' => '/opt/lib/perl5/5.6.1/Carp.pm', 'ModPerl/Hello.pm' => '/usr/local/apache_1.3.31/mod-perl/ModPerl/Hello.pm', 'Time/Local.pm' => '/opt/lib/perl5/5.6.1/Time/Local.pm', 'lib.pm' => '/opt/lib/perl5/5.6.1/lib.pm', 'DynaLoader.pm' => '/opt/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm', 'Apache/Status.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Status.pm', 'Apache/Registry.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Registry.pm', 'CGI/Util.pm' => '/opt/lib/perl5/5.6.1/CGI/Util.pm', 'Apache.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache.pm', 'constant.pm' => '/opt/lib/perl5/5.6.1/constant.pm', 'Apache/Constants.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Constants.pm', 'strict.pm' => '/opt/lib/perl5/5.6.1/strict.pm', 'vars.pm' => '/opt/lib/perl5/5.6.1/vars.pm', 'Config.pm' => '/opt/lib/perl5/5.6.1/sun4-solaris/Config.pm', 'integer.pm' => '/opt/lib/perl5/5.6.1/integer.pm', 'Apache/Symbol.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Symbol.pm', 'CGI.pm' => '/opt/lib/perl5/5.6.1/CGI.pm', 'Apache/Server.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Server.pm', 'Data/Dumper.pm' => '/opt/lib/perl5/5.6.1/sun4-solaris/Data/Dumper.pm', 'XSLoader.pm' => '/opt/lib/perl5/5.6.1/sun4-solaris/XSLoader.pm', 'Apache/Connection.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Connection.pm', 'Exporter/Heavy.pm' => '/opt/lib/perl5/5.6.1/Exporter/Heavy.pm', 'B.pm' => '/opt/lib/perl5/5.6.1/sun4-solaris/B.pm', 'Apache/Constants/Exports.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Constants/Exports.pm ', 'conf/startup_modperl.pl' => '/home/ianm/apache//conf/startup_modperl.pl', 'mod_perl.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/mod_perl.pm', 'Time/Piece.pm' => '/home/ianm/lib/site_perl/5.6.1/sun4-solaris/Time/Piece.pm', 'warnings/register.pm' => '/opt/lib/perl5/5.6.1/warnings/register.pm', 'warnings.pm' => '/opt/lib/perl5/5.6.1/warnings.pm', 'Apache/Table.pm' => '/opt/lib/perl5/site_perl/5.6.1/sun4-solaris/Apache/Table.pm', 'Time/Seconds.pm' => '/home/ianm/lib/site_perl/5.6.1/sun4-solaris/Time/Seconds.pm', 'UNIVERSAL.pm' => '/opt/lib/perl5/5.6.1/UNIVERSAL.pm', 'overload.pm' => '/opt/lib/perl5/5.6.1/overload.pm', 'AutoLoader.pm' => '/opt/lib/perl5/5.6.1/AutoLoader.pm' }; Use of inherited AUTOLOAD for non-method Time::Piece::import() is deprecated at /home/ianm/cgi-perl/test.pl line 13. [Mon Jan 17 11:29:27 2005] [error] Can't locate auto/Time/Piece/import.al in @INC (@INC contains: /usr/local/apache_1.3.31/mod-perl /home/ianm/conquer/cgi-bin/lib /home/system/cgi-bin/lib /opt/lib/perl5/site_perl /opt/lib/perl5/site_perl/5.6.1 /opt/lib/perl5/5.6.1 /opt/lib/perl5/5.6.1/sun4-solaris /home/ianm/lib/perl5/site_perl/5.6.1/sun4-solaris /home/ianm/lib/perl5/site_perl/5.6.1 /home/ianm/lib/site_perl/5.6.1/sun4-solaris /home/ianm/lib/site_perl/5.6.1 /usr/local/apache_1.3.31/mod-perl /home/ianm/conquer/cgi-bin/lib/sun4-solaris /home/ianm/conquer/cgi-bin/lib /home/ianm/lib/perl5/5.6.1/sun4-solaris /home/ianm/lib/perl5/5.6.1 /home/ianm/lib/perl5 /home/ianm/lib/site_perl /home/ianm/lib/perl5/site_perl/5.6.1//sun4-solaris /home/ianm/lib/perl5/site_perl/5.6.1/ /opt/lib/perl5/5.6.1/sun4-solaris /opt/lib/perl5/5.6.1 /opt/lib/perl5/site_perl/5.6.1/sun4-solaris /opt/lib/perl5/site_perl/5.6.1 /opt/lib/perl5/site_perl . /home/ianm/apache/ /home/ianm/apache/lib/perl) at /home/ianm/cgi-perl/test.pl line 13\n #------------------------------------------------------------cut-------- ------------------------------------------------------ Thank you in advance for any help, Ian -- Dr Ian McDonald Software Engineer, Interactive Drama & Entertainment A300, 56-58 Wood Lane (CH), London W12 7SB 020 822 56162 [EMAIL PROTECTED] / "Ian McDonald-ONLINE" (not "Ian MacDonald") http://www.bbc.co.uk/ This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system. Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received. Further communication will signify your consent to this.