当匹配 Net.Data 语言结构语法的字符在函数块的语言结构节中作为一部分语法上有效的嵌入程 序码(例如 REXX 或 Perl)使用时,它们可能被作为 Net.Data 语言结构而被误解释,因而导致 错误或宏中不可预测的结果。
例如,Perl 函数可能使用 COMMENT 块定界符 %{。 运行宏时,%{ 被作为 COMMENT 快的开头来 解释。然后 Net.Data 查找 COMMENT 块的结尾,当它读到函数块结尾时就认为是找到了。Net.Data 然后继续查找函数块的结尾,但当找不到时,就发出一个错误。
使用以下方式之一来使用 COMMENT 块定界符字符,或使用任何其它 Net.Data 特殊字符作为嵌 入程序代码的一部分,而不让它们被 Net.Data 作为特殊字符来解释:
例如,以下 Perl 函数包含表示一个 COMMENT 块定界符 %{ 的字符作为 Perl 语言语句的一部 分:
%function(DTW_PERL) func() { ... for $num_words (sort bynumber keys %{ $Rtitles{$num} }) { &make_links($Rtitles{$num}{$num_words}); } ... %}
要保证 Net.Data 将 %{ 字符作为 Perl 源码而不是作为 Net.Data COMMENT 块定 界符,可以用以下方式之一重写函数:
%function(DTW_PERL) func() { %EXEC{ func.prl %} %}
%define percent_openbrace = "%{" %function(DTW_PERL) func() { ... for $num_words (sort bynumber keys $(percent_openbrace) $Rtitles{$num} }) { &make_links($Rtitles{$num}{$num_words}); } ... %}