将在Windows或Linux下运行的Perl preamble

Is there any single magic "preamble" that will make a Perl script run under Windows (as a batch file) or Linux (as an executable file), similar to the preambles out there that make it work under any shell?

#0

I doubt that you can get windows to accept a shbang (#!). So if you can run with the default shell (in my case bash), then this works in bash:

@REM <<:END_REM
@echo off
echo This is DOS, this will only run in DOS.
perl -x -S %0 %*
goto over_nix
:END_REM
echo This is *NIX, this will only run in *NIX.
perl -x -S $0 $*

:<<__END__
#!perl
use 5.012;
use Data::Dumper; 

say Dumper( \%ENV );

__END__
@REM <<:over_nix
:over_nix

This required an executable in my NIX path called '@REM'.

echo >> ~/bin/@REM
chmod +x ~/bin/@REM

#1

You mean like these wrappers that came with ActiveState Perl?

@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
    eval 'exec Z:\Software\Perl\5.8.8\bin\perl.exe -S $0 ${1+"$@"}'
    if $running_under_some_shell;
#!/usr/bin/perl
# $Id: cpan,v 1.3 2002/08/30 08:55:15 k Exp $
use strict;

=head1 NAME

cpan - easily interact with CPAN from the command line

The script ends with these lines:

1;    
__END__
:endofperl

although I'm not sure you really need the BAT tag ":endofperl" at the end or the "goto endofperl" in the top section (could use an "exit"?).

推荐文章

WIX自定义操作-在不同时间运行以进行安装、升级和卸载

WIX自定义操作-在不同时间运行以进行安装、升级和卸载

推荐文章

Jquery检查父级是否有ID

Jquery检查父级是否有ID

推荐文章

在两个视图之间发送字符串?

在两个视图之间发送字符串?

推荐文章

获取R.raw文件夹的完整路径

获取R.raw文件夹的完整路径

推荐文章

什么样的日期选择控件适合MVC2?

什么样的日期选择控件适合MVC2?

推荐文章

上传图像的最简单方法

上传图像的最简单方法

推荐文章

使用CrystalReport和WPF,C#

使用CrystalReport和WPF,C#

推荐文章

使用GeoDjango在postGIS上需要性能

使用GeoDjango在postGIS上需要性能

推荐文章

Java Runtime.exec运行Java问题

Java Runtime.exec运行Java问题

推荐文章

将Jquery添加到新窗口“Window.open”

将Jquery添加到新窗口“Window.open”

推荐文章

C#:如何修改选定的文本/换行内容等?

C#:如何修改选定的文本/换行内容等?

推荐文章

在android中无法获得滚动条

在android中无法获得滚动条

推荐文章

强制Delphi使用chdir打开项目的目录

强制Delphi使用chdir打开项目的目录

推荐文章

具体来说,什么属于模型、视图和控制器?

具体来说,什么属于模型、视图和控制器?

推荐文章

背景图像的CSS定位

背景图像的CSS定位

推荐文章

在C中公开数组元素的属性#

在C中公开数组元素的属性#