in reply to Supporting a production environment

I've sometimes solved problems like this using environment variables. I'll use variables for the "root" of the project, and set PERL5LIB to the directories for the current environment. I set the production values in Apache's httpd.conf, and when I'm testing I set them from a script.
  • Comment on Re: Supporting a production environment

Replies are listed 'Best First'.
Re: Re: Supporting a production environment
by jeb6kids (Initiate) on May 04, 2004 at 15:51 UTC

    Thank you!

    I did a little experimenting-- this also might be just what I need to alter the location where Packages are found depending on the environment...

    My brief look at this technique seems to indicate that internal "use lib PackageDir;" statements take precedent over values set into PERL5LIB 8--(, but I could alter my current practice to make this suggestion work for me too!

      One caveat of using PERL5LIB is that it's ignored if you're running under taint mode (and if this is a Web application, you should be). You can work around this by doing your own PERL5LIB handling. This is only safe if the environment is under your control, and the script isn't setUID or grant other special powers when run from the command-line.
      BEGIN { if ($ENV{PERL5LIB} and $ENV{PERL5LIB} =~ /^(.*)$/) { # Blindly untaint. Taintchecking is to protect from Web data; # the environment is under our control. eval "use lib '$_';" foreach (reverse split(/:/,$1)); } }