in reply to Can't locate IO/Scalar.pm in @INC (@INC contains: /opt/rocks/lib/perl5/5.8.8/

What do you get with

$ strace -efile perl -MIO::Scalar -e1 2>&1 | grep Scalar

(strace would be for Linux)

Replies are listed 'Best First'.
Re^2: Can't locate IO/Scalar.pm in @INC (@INC contains: /opt/rocks/lib/perl5/5.8.8/
by donghe (Initiate) on Apr 24, 2009 at 01:54 UTC
    thanks, I got this following results: execve("/usr/bin/perl", "perl", "-MIO::Scalar", "-e1", /* 40 vars */) = 0 stat64("/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/IO/Scalar.pmc", 0xbf8b50bc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/IO/Scalar.pm", 0xbf8b4fcc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi/IO/Scalar.pmc", 0xbf8b50bc) = -1 ENOENT (No such file or directory stat64("/usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi/IO/Scalar.pm", 0xbf8b4fcc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/IO/Scalar.pmc", 0xbf8b50bc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/IO/Scalar.pm", 0xbf8b4fcc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/IO/Scalar.pmc", 0xbf8b50bc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/IO/Scalar.pm", 0xbf8b4fcc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.8/IO/Scalar.pmc", 0xbf8b50bc) = -1 ENOENT (No such file or directory) stat64("/usr/lib/perl5/site_perl/5.8.8/IO/Scalar.pm", {st_mode=S_IFREG|0444, st_size=16737, ...}) = 0 open("/usr/lib/perl5/site_perl/5.8.8/IO/Scalar.pm", O_RDONLY|O_LARGEFILE) = 4 do you have any clue?

      The last line 'open(...) = 4' shows that IO/Scalar.pm is successfully opened (so, I suppose you don't get the "Can't locate..." error in this case when just plain loading nothing but the module).

      What do you get when you replace "perl -MIO::Scalar -e1" in the strace command with a call to your actual script that exhibits the problem? (Depending on how exactly you're calling the script (e.g. via shell wrapper), you might need the additional option -f to strace. In case of doubt, specify it anyway.)  Maybe the script itself is messing with @INC, or some such...  BTW, are you sure that you're using the same perl (i.e. /usr/bin/perl) to run the script?

        I also found that directories in @INC mentioned in error message and that gotten by using "perl -V" are some different.

        from error message:
        Can't locate IO/Scalar.pm in @INC (@INC contains:
        /home/donghe/iprscan/lib
        /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8
        /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_per /5.8.6
        /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl
        /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.8 /
        usr/lib/perl5/vendor_perl/5.8.7
        /usr/lib/perl5/vendor_perl/5.8.6
        /usr/lib/perl5/vendor_perl/5.8.5
        /usr/lib/perl5/vendor_perl
        /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8
        .)

        from perl -V
        @INC: /usr/lib/perl5/site_perl/5.8.8//i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.8/
        /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
        /usr/lib/perl5/site_perl/5.8.8
        /usr/lib/perl5/site_perl/5.8.7
        /usr/lib/perl5/site_perl/5.8.6
        /usr/lib/perl5/site_perl/5.8.5
        /usr/lib/perl5/site_perl
        /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
        /usr/lib/perl5/vendor_perl/5.8.8
        /usr/lib/perl5/vendor_perl/5.8.7
        /usr/lib/perl5/vendor_perl/5.8.6
        /usr/lib/perl5/vendor_perl/5.8.5
        /usr/lib/perl5/vendor_perl
        /usr/lib/perl5/5.8.8/i386-linux-thread-multi
        /usr/lib/perl5/5.8.8

        if I put Scalar.pm in '/home/donghe/iprscan/lib', this problem is solved! however '/home/donghe/iprscan/lib' is not included in the @INC showed by using 'perl -V'. do you know the reason?