Perl 语言环境能够解释在 Net.Data 宏的一个 FUNCTION 块中指定的在线 Perl 脚本, 或者它能处理存储在服务器上单独文件中的外部 Perl 脚本。对外部 Perl 脚本的调用在 FUNCTION 块 中是由一个 EXEC 语句来标识的,例如:
%EXEC{ perl-script-name [optional parameters] %}
Perl 语言环境不能直接传递或检索 Net.Data 变量,因此 Perl 脚本以这种方式来使用它们:
name = value
对于复合数据项,可以用一个新行字符 或空字符分开每个项。
如果一个变量名称与输出参数的名称相同且使用上述语法, 则新的值将替换当前值。如果变量名不对应于输出参数,Net.Data 将把它忽略。
以下示例显示了 Net.Data 如何从一个宏文件传递变量。
%FUNCTION(DTW_PERL) today() RETURNS(result) { $date = `date`; chop $date; open(DTW, "> $ENV{DTWPIPE}") || die "Could not open: $!"; print DTW "result = \"$date\"\n"; %} %HTML(INPUT) { @today() %}
如果 Perl 脚本位于一个名为 today.prl 的外部文件中,那么这个函数可以按下一个 例子来编写:
%FUNCTION(DTW_PERL) today() RETURNS(result) { %EXEC { today.prl %} %}
Perl 语言环境程序通过 Net.Data 名称来访问表格参数的值。表格 T 的列标题 为 T_N_i,字段值为 T_V_i_j。表格 T 中的行数与列数分别是 T_ROWS 和 T_COLS。
REPORT 和 MESSAGE 块在所有 FUNCTION 部分都是允许的。它们由 Net.Data 来处理,而不是由 语言环境来处理。当然,Perl 程序可以将文本写入标准输出流,并直接处理输出的 HTML 格式。
权限技巧:请确保 Web 服务器对于此语言环境所引用的任何 外部的可执行文件都具有访问权限,包括 Perl 解释程序正确的版本号。请参阅 Net.Data 管理和程序设计指南的 配置一章中关于指定 Web 服务器对 Net.Data 文件的访问权限这一部分,以获取更多信息。