in reply to module librarys query

--
<http://www.dave.org.uk>

"The first rule of Perl club is you don't talk about Perl club."

Replies are listed 'Best First'.
Re: Re: module librarys query
by costas (Scribe) on Sep 26, 2001 at 14:09 UTC
    thanks for the explanation!

    Do you have any explanation as to why my browser would succesfully use one version of a module whilst the same script run on my command prompt would not be able to find that module?

    Costas

      Sounds like the @INC array is different in the two different scenarios. There are a number of ways that this can happen.

      • A script can use use lib to change @INC explicitly.
      • The value of PERL5LIB could be set either in a .profile (remember that the web server probably runs as a different user) or perhaps the web server is configured to change it.
      • The current directory is always in @INC. That could be different.

      Also, as the web server runs as a different user, you might not have the correct permissions to read the module file (are you seeing an error message?)

      Perhaps printing out the value of @INC at the start of the program would point out differences. It's also worth looking at the contents of %INC which contains the list of loaded modules together with the path that they are loaded from.

      Update: The esteemed chromatic reminds me that if you're running you CGI script in taint mode (as we all should do all the time) then the current directory won't be in @INC. This may effect your investigation.

      --
      <http://www.dave.org.uk>

      "The first rule of Perl club is you don't talk about Perl club."

      Maybe your server has two Perl interpreters installed (don't ask me why, but it could happen). So when you type from shell, let's say perl ./myscript.pl, you're calling a different perl than /usr/bin/perl: so, with different libraries directories and so on. Try which perl from shell. I hope it could be useful.