in reply to Re: More multiplatform perl
in thread More multiplatform perl

I am putting the full path to perl in the shebang line.

At first, since the wrapper script had /bin/ksh in the shebang line, I assumed that the this was getting executed with the perl script I was trying to run. However, I tried changing #!/bin/ksh to #!/my/home/dir/perl/bin/perl5.8.0-IRIX64 in the wrapper script, but any perl scripts I ran *still* executed with ksh, which leads me to believe it's a problem with the system, not the way I set it up. Since perl/bin/perl is a text file, not a binary, would the system assume it isn't a valid interpreter and try to execute perl scripts with the shell?

Replies are listed 'Best First'.
Re: Re: Re: More multiplatform perl
by jsegal (Friar) on Nov 15, 2002 at 19:42 UTC
    Hmm.
    What should be happening is this:
    1. You try to execute "myperlscript", which is an executable file, which begins with #!/path/to/my/perl.
    2. The system sees that the file begins with #!/path/to/my/perl, and executes /path/to/my/perl with the full path the script as the first argument (and any additional command line arguments will follow)
    3. The /path/to/my/perl program (the ksh script) is another text file -- the OS opens this up, sees that it should run /bin/ksh (from the first line), and effectively runs  /bin/ksh /path/to/my/perl myperlscript <args>
    4. Now /path/to/my/perl is executed, and its last line is exec /path/to/proper/perl "$@", so it executes /path/to/proper/perl myperlscript <args>
    5. perl takes over from here and runs your script...
    If your perl script is being executed via ksh, that sounds to me like your wrapper script has an error of some sort -- the wrapper script should be explicitly executing perl on your perl script.
    If you post your sample scripts (your perl wrapper and your sample perl script) that will help us diagnose what is happening...

    --JAS
      I would agree about the wrapper script having an error, except that the wrapper script is never being executed. Regardless of what is in the shebang line for the wrapper script, running "myperlscript", say, tries to execute myperlscript with ksh, and anything in the wrapper script isn't executed at all. (I'm not at work right now, so I can't post the scripts I'm using.)

      Update: I tried it under Cygwin using bash and it worked fine at first; however, now when I run it I'm getting "bad interpreter: No such file or directory" some times and "bad interpreter: Interrupted system call" other times. Not sure what happened to make it stop working.