Initial Commit
This commit is contained in:
97
database/perl/bin/runperl.bat
Normal file
97
database/perl/bin/runperl.bat
Normal file
@@ -0,0 +1,97 @@
|
||||
@rem = '--*-Perl-*--
|
||||
@echo off
|
||||
if "%OS%" == "Windows_NT" goto WinNT
|
||||
IF EXIST "%~dp0perl.exe" (
|
||||
"%~dp0perl.exe" -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||||
) ELSE IF EXIST "%~dp0..\..\bin\perl.exe" (
|
||||
"%~dp0..\..\bin\perl.exe" -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||||
) ELSE (
|
||||
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||||
)
|
||||
|
||||
goto endofperl
|
||||
:WinNT
|
||||
IF EXIST "%~dp0perl.exe" (
|
||||
"%~dp0perl.exe" -x -S %0 %*
|
||||
) ELSE IF EXIST "%~dp0..\..\bin\perl.exe" (
|
||||
"%~dp0..\..\bin\perl.exe" -x -S %0 %*
|
||||
) ELSE (
|
||||
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 -w
|
||||
#line 29
|
||||
$0 =~ s|\.bat||i;
|
||||
unless (-f $0) {
|
||||
$0 =~ s|.*[/\\]||;
|
||||
for (".", split ';', $ENV{PATH}) {
|
||||
$_ = "." if $_ eq "";
|
||||
$0 = "$_/$0" , goto doit if -f "$_/$0";
|
||||
}
|
||||
die "'$0' not found.\n";
|
||||
}
|
||||
doit: exec "perl", "-x", $0, @ARGV;
|
||||
die "Failed to exec '$0': $!";
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
runperl.bat - "universal" batch file to run perl scripts
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
C:\> copy runperl.bat foo.bat
|
||||
C:\> foo
|
||||
[..runs the perl script 'foo'..]
|
||||
|
||||
C:\> foo.bat
|
||||
[..runs the perl script 'foo'..]
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This file can be copied to any file name ending in the ".bat" suffix.
|
||||
When executed on a DOS-like operating system, it will invoke the perl
|
||||
script of the same name, but without the ".bat" suffix. It will
|
||||
look for the script in the same directory as itself, and then in
|
||||
the current directory, and then search the directories in your PATH.
|
||||
|
||||
It relies on the C<exec()> operator, so you will need to make sure
|
||||
that works in your perl.
|
||||
|
||||
This method of invoking perl scripts has some advantages over
|
||||
batch-file wrappers like C<pl2bat.bat>: it avoids duplication
|
||||
of all the code; it ensures C<$0> contains the same name as the
|
||||
executing file, without any egregious ".bat" suffix; it allows
|
||||
you to separate your perl scripts from the wrapper used to
|
||||
run them; since the wrapper is generic, you can use symbolic
|
||||
links to simply link to C<runperl.bat>, if you are serving your
|
||||
files on a filesystem that supports that.
|
||||
|
||||
On the other hand, if the batch file is invoked with the ".bat"
|
||||
suffix, it does an extra C<exec()>. This may be a performance
|
||||
issue. You can avoid this by running it without specifying
|
||||
the ".bat" suffix.
|
||||
|
||||
Perl is invoked with the -x flag, so the script must contain
|
||||
a C<#!perl> line. Any flags found on that line will be honored.
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Perl is invoked with the -S flag, so it will search the PATH to find
|
||||
the script. This may have undesirable effects.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
perl, perlwin32, pl2bat.bat
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
__END__
|
||||
:endofperl
|
||||
Reference in New Issue
Block a user