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