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]

Reply via email to