On Tue, Nov 11, 2003 at 04:12:03PM -0500, Raj (Basavaraj) Karadakal wrote: > Hi, > I am trying to package a perl script and the modules it uses , in a > tar file. When untarred on any machine, the modules can be found in a known
Have you looked at PAR? > relative path with respect to the script. The path in which these modules > are available can change depending on where the package got untarred. So > only way the script can find modules is by using relative path in @INC. But > for this to work the user should always be in the same directory as the > script. To overcome this limitation of my script, I am trying to use a > reference to a subroutine in @INC, which returns the filehandle to the > module. When I run my script, I am able to find the module and open it, and > return the filehandle, but the perl still complains that it cannot find the > module. > > $/tmp/1.pl > Found /tmp/usr/mods/setuprhost.pm > Can't locate setuprhost.pm in @INC (@INC contains: > /usr/local/lib/perl5/5.6.1/sun4-solaris /usr/local/lib/perl5/5.6.1 > /usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris > /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl . > CODE(0xfeda0)) at /home/users/bkaradak/tmp/install_card line 33. > BEGIN failed--compilation aborted at /home/users/bkaradak/tmp/install_card > line 33. > > Following is my script:- > > #!/usr/local/bin/perl -w > > sub readMod { > my ($ref,$mod) = @_; > my $dir = $0; > my $modPath; > $dir =~ s/\/[^\/]+$//; > if ( -f "$dir/usr/mods/$mod" ) { > $modPath = "$dir/usr/mods/$mod"; > } > if ( -f "$modPath" ) { > print "Found $modPath\n"; > open (MOD,"$modPath") or die "Cannot open $modPath $!\n"; > return MOD ; open my $fh, $modPath or die "Cannot open $modPath $!\n"; return $fh; > }else { > return undef ; > } > } > > BEGIN { push ( @INC, \&readMod ); } > use setuprhost; > &setuprhost::Setup(<host name>); > > > What am I doing wrong? -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]