DOS命令,可以和Perl语言混用使用吗?

DOS命令,可以和Perl语言混用使用吗?

看到如下脚本,有些疑惑:

@rem = ' PERL for Windows NT - cqperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
use Win32;

use DBI;
my $dbh = DBI->connect("DBI:mysql:database=yu;host=localhost","root","", {'RaiseError' => 1});
$result="c:\\find_result.xls";

@echo off和@rem是DOS命令,其可以和Perl语言混用使用吗?(在一个perl脚本文件中使用)
已经这样写出来了,当然可以混合使用了。

这个脚本既可以用 CMD 执行,也可以用 Perl 来执行。
这里面有个技巧。
这个文件当作 DOS 命令来执行的时候,只会执行第一行、第二行,到了第三行的时候,因为调用了 ccperl 这个命令,那么实际上会将本文件(%0)当作一个 perl 程序来重新运行一次,运行完之后,goto endofperl 会跳转到本文件的最后一行,从而避免 DOS 看到中间那些 perl 代码。

当这个文件当作 perl 命令来执行的时候,从第一行到第五行只是定义了一个叫做 @rem 的数组,这个数组后面也不会用到,
因此它也是一个正确的 perl 程序。

总结:这个文件既是一个合法的 perl 程序,也是一个执行时不会出错的 dos 批处理。
事实上,这个程序就是用 pl2bat 程序生成的,详细介绍请参见 perldoc pl2bat
flw 斑竹分析得是,CMD 下还有很多脚本可以混合编程,比如 bat & vbs 、ruby & bat etc,感觉都是妙用各个脚本语言的注释语句来实现的。


QUOTE:
原帖由 __lxmxn__ 于 2008-4-15 11:59 发表
flw 斑竹分析得是,CMD 下还有很多脚本可以混合编程,比如 bat & vbs 、ruby & bat etc,感觉都是妙用各个脚本语言的注释语句来实现的。

我不把这个叫做“混合编程”,因为它们运行时根本就没有混合。
只是源代码混合在一起罢了。
斑主可以给个真正混合编程的例子吗?
哦,flw 斑竹分析得是,我给不出这种例子,只是flw解释之前,我以为这是混合编程。
呵呵,我一般是使用perl做主程序,然后用Batch做“外壳”,这样可以随意的组合程序,用来实现一些目标。
偶尔会用System来组合perl和batch来组成相互调用。这个代码思想比我写的程序先进,顶!~


QUOTE:
原帖由 不死草 于 2008-4-15 15:40 发表
呵呵,我一般是使用perl做主程序,然后用Batch做“外壳”,这样可以随意的组合程序,用来实现一些目标。
偶尔会用System来组合perl和batch来组成相互调用。这个代码思想比我写的程序先进,顶!~

能否分享一下呢?