[tpm] Is there a way to choose from several interpreters, using the hashBang?

Indy Singh indy at indigostar.com
Fri Jun 24 12:25:00 PDT 2011


Windows version of Perl come with a script called pl2bat, which converts a perl script to a batch file.  This is done by wrapping the perl script with some line of batch code.  An example for a single line ‘Hello world’ script is later in the email.  The batch file initially runs as a batch file, then calls the Perl interpreter using the same batch file as the input perl script.  The command to do that is: “perl –x –S %0”.  
This looks for the Perl interpreter using the PATH environment variable.  

You could change the wrapper batch file to look for Perl in multiple places.

Windows does not use the #! line to locate perl, except in the special case of running the script under Apache as a CGI script.

Instead of pulling in the modules with ‘use’ statements, you can wrap the use statements with an eval expression.  Something like this (untested) code:
eval (“use Foo:: Bar;”);
if ($@) {
    print error message and exit.
}


===== EXAMPLE BATCH FILE WRAPPED PERL SCRIPT ==============
@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!perl
#line 15
print "hello world\n";

__END__
:endofperl


Indy Singh
IndigoSTAR Software -- www.indigostar.com

From: J Z Tam 
Sent: Friday, June 24, 2011 2:32 PM
To: Toronto Perl Mongers ; Mike Stok 
Subject: [tpm] Is there a way to choose from several interpreters,using the hashBang?

      CAVEAT:  Windoze XP and Server2003/5  here. Ugh.  I'm trying to figure out an elegant way to have multiple install trees able to be sourced, either just before a perl program is executed, or at the time the hashBang line is encountered. 

      I thought there was a nifty cool way to select the particular   perl interpreter just before the #! line, or actually AT the  #!  line.
      1. Q: what if the caller's %PATH% environment variable does NOT contain a valid pathToInterpreter
      2. Q:  What if the the install tree that is eventually found, is missing a use'd or require'd  package, or the wrong version of the package?

     



--------------------------------------------------------------------------------
_______________________________________________
toronto-pm mailing list
toronto-pm at pm.org
http://mail.pm.org/mailman/listinfo/toronto-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20110624/b538584d/attachment.html>


More information about the toronto-pm mailing list