Front page | perl.beginners |
Postings from September 2003
RE: building module/package
Thread Previous
|
Thread Next
From:
Hanson, Rob
Date:
September 30, 2003 11:51
Subject:
RE: building module/package
Message ID:
E693DE68445C064FA112BAFE0A5EFD2501F6E8DB@exchange.nj.aptegrity.com
Besides the advice given below, there are a few other things you can do...
To add the location of the Perl script to the lib path you can use this.
The FindBin module finds your script, then sets $Bin to that location.
use FindBin qw($Bin);
use lib $Bin;
Another way to do it is to set the environment variable PERL5LIB to the
location of your home-grown modules. You can set this in the Apache config
(or .htaccess file) with the setenv command (see Apache docs for more info,
but I think it is "setenv PERL5LIB /path/to/lib").
You could also install it into the "site_perl" directory in your @INC path,
but you should never put it in the "vendor_perl" directories.
Of the above options I would recommend using the PERL5LIB env variable.
...And I would also recommend that the libraries not be put in any directory
accessable to the web server (unless you have no choice).
Rob
-----Original Message-----
From: Daniel Staal [mailto:DStaal@usa.net]
Sent: Tuesday, September 30, 2003 2:39 PM
To: perl@swanmail.com; Perl Newbies
Subject: Re: building module/package
--On Monday, September 29, 2003 23:53 -0700 "perl@swanmail.com"
<perl@swanmail.com> wrote:
> -I've sent this to the mod_perl list but there seems to be no
> response.
>
> I got the module working in the current directory executing on the
> command line. But I have a problem calling a module in my mod_perl
> dir using apache on redhat 9. I have a mystuff.pm in the same
> directory as the calling perl program. I got it working running on
> the command line but in apache mod_perl, it can't find the module.
Ok, I know nothing about mod_perl, but let's see what I can do.
First guess: mod_perl considers that 'the current directory' is
either itself or insecure. (Probably the latter: it is in this
context.)
> Questions:
> - Where should the mystuff.pm be located in?
> - The only place i know about mod_perl configuration file is:
> /etc/httpd/conf.d/perl.conf. This contains the Alias and Directory
> directive.
>
> Error message:
> Can't locate mystuff.pm in @INC (@INC contains:
> /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0
> /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
> /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl
> /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
> /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl
> /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .)
Hmm. So it does seem to contain the current directory... (That
would be the '.' at the end.) Doesn't help much: We still don't know
*which* directory is the current directory.
There are two or three things you could do here. First off, you
could put 'mystuff.pm' in one of the above directories. Don't really
recommend that, it confuses the user on what is written on your end
and what isn't, but it is possible.
Secondly, you could see if there is a way to add to the @INC array in
mod_perl's config. I would assume so, but I have no clue...
Third, you could add to @INC in your program file. The best way to
do this is to use the 'use lib' pragma. Syntax: 'use lib "$lib";'
where $lib is any perl expression that can be expanded into the
directory. (That means you can use variables, but only ones that
will have a value without running any of your program code...) Put
that in your program before you 'use' your module.
To simplify: put 'use lib "/path/to/module";' before 'use module;' in
your main program and it should work. ;-)
> Any help would be great.
> By the way, I just getting started with perl.
> -rkl
Hey, I haven't even completed my first perl program yet. It just
happens that my first program is best written with three modules...
Daniel T. Staal
---------------------------------------------------------------
This email copyright the author. Unless otherwise noted, you
are expressly allowed to retransmit, quote, or otherwise use
the contents for non-commercial purposes. This copyright will
expire 5 years after the author's death, or in 30 years,
whichever is longer, unless such a period is in excess of
local copyright law.
---------------------------------------------------------------
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
Thread Previous
|
Thread Next