home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / topware / activeperl / ActivePerl-5.8.4.810-MSWin32-x86.exe / ActivePerl-5.8.4.810 / Perl / bin / runperl.bat < prev    next >
DOS Batch File  |  2004-06-01  |  2KB  |  84 lines

  1. @rem = '--*-Perl-*--
  2. @echo off
  3. if "%OS%" == "Windows_NT" goto WinNT
  4. perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. :WinNT
  7. perl -x -S %0 %*
  8. if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
  9. if %errorlevel% == 9009 echo You do not have Perl in your PATH.
  10. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
  11. goto endofperl
  12. @rem ';
  13. #!perl -w
  14. #line 15
  15. $0 =~ s|\.bat||i;
  16. unless (-f $0) {
  17.     $0 =~ s|.*[/\\]||;
  18.     for (".", split ';', $ENV{PATH}) {
  19.     $_ = "." if $_ eq "";
  20.     $0 = "$_/$0" , goto doit if -f "$_/$0";
  21.     }
  22.     die "`$0' not found.\n";
  23. }
  24. doit: exec "perl", "-x", $0, @ARGV;
  25. die "Failed to exec `$0': $!";
  26. __END__
  27.  
  28. =head1 NAME
  29.  
  30. runperl.bat - "universal" batch file to run perl scripts
  31.  
  32. =head1 SYNOPSIS
  33.  
  34.     C:\> copy runperl.bat foo.bat
  35.     C:\> foo
  36.     [..runs the perl script `foo'..]
  37.     
  38.     C:\> foo.bat
  39.     [..runs the perl script `foo'..]
  40.     
  41.  
  42. =head1 DESCRIPTION
  43.  
  44. This file can be copied to any file name ending in the ".bat" suffix.
  45. When executed on a DOS-like operating system, it will invoke the perl
  46. script of the same name, but without the ".bat" suffix.  It will
  47. look for the script in the same directory as itself, and then in
  48. the current directory, and then search the directories in your PATH.
  49.  
  50. It relies on the C<exec()> operator, so you will need to make sure
  51. that works in your perl.
  52.  
  53. This method of invoking perl scripts has some advantages over
  54. batch-file wrappers like C<pl2bat.bat>:  it avoids duplication
  55. of all the code; it ensures C<$0> contains the same name as the
  56. executing file, without any egregious ".bat" suffix; it allows
  57. you to separate your perl scripts from the wrapper used to
  58. run them; since the wrapper is generic, you can use symbolic
  59. links to simply link to C<runperl.bat>, if you are serving your
  60. files on a filesystem that supports that.
  61.  
  62. On the other hand, if the batch file is invoked with the ".bat"
  63. suffix, it does an extra C<exec()>.  This may be a performance
  64. issue.  You can avoid this by running it without specifying
  65. the ".bat" suffix.
  66.  
  67. Perl is invoked with the -x flag, so the script must contain
  68. a C<#!perl> line.  Any flags found on that line will be honored.
  69.  
  70. =head1 BUGS
  71.  
  72. Perl is invoked with the -S flag, so it will search the PATH to find
  73. the script.  This may have undesirable effects.
  74.  
  75. =head1 SEE ALSO
  76.  
  77. perl, perlwin32, pl2bat.bat
  78.  
  79. =cut
  80.  
  81.  
  82. __END__
  83. :endofperl
  84.