[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] Using a perl module without installing it...




On Jan 11, 2005, at 2:58 PM, Daniel Linder wrote:
Questions:
1: Can anyone give me pointers so that I can replace the "use XXX::YYY;" syntax and do something like "include /full/path/to/YYY.pm" or other such
trick?

2: Or, can someone give me hints as to how to write my script to modify
the @INC variable (??) to use ~/lib rather than the systems default
"/usr/lib/perl5/..." directories?


So I have a package "Jay" in a weird location:


$ pwd
/Users/jhannah/weird_location
$ cat Jay.pm
package Jay;

sub hello {
   print "Hi!\n";
}

1;


If I'm in /Users/jhannah and I try to use it it doesn't work:


$ perl -e 'use Jay; Jay::hello()'
Can't locate Jay.pm in @INC (@INC contains: /sw/lib/perl5 /System/Library/Perl/5.8.1/darwin-thread-multi-2level /System/Library/Perl/5.8.1 /Library/Perl/5.8.1/darwin-thread-multi-2level /Library/Perl/5.8.1 /Library/Perl /Network/Library/Perl/5.8.1/darwin-thread-multi-2level /Network/Library/Perl/5.8.1 /Network/Library/Perl .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.


(Solution 1)

       Use -I when invoking perl

       from "perldoc perlrun"
       -Idirectory
Directories specified by -I are prepended to the search path for modules (@INC), and also tells the C preprocessor where to search for include files. The C preprocessor is invoked with -P; by
            default it searches /usr/include and /usr/lib/perl.

$ perl -I "/Users/jhannah/weird_location" -e 'use Jay; Jay::hello()'
Hi!


(Solution 2)

       Set your $PERL5LIB environmental variable.

       from "perldoc perlrun"
PERL5LIB A list of directories in which to look for Perl library files before looking in the standard library and the cur- rent directory. Any architecture-specific directories
                   -snip!-


$ setenv PERL5LIB /Users/jhannah/weird_location
( That was MAC OSX. Linux would be 'export PERL5LIB=/Users/jhannah/weird_location' )
$ perl -e 'use Jay; Jay::hello()'
Hi!


(Solution 3)

       'use lib' in your script.
       see "perldoc lib"

$ perl -e 'use lib "/Users/jhannah/weird_location"; use Jay; Jay::hello()'


HTH,

j