in reply to Re: module librarys query
in thread module librarys query

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

Replies are listed 'Best First'.
Re: Re: Re: module librarys query
by davorg (Chancellor) on Sep 26, 2001 at 14:18 UTC

    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."

Re: Re: Re: module librarys query
by larsen (Parson) on Sep 26, 2001 at 14:29 UTC
    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.