从tclsh调用perl程序,使用-open和-close作为参数

时间:2013-11-07 00:01:07

标签: perl tcl

我是Perl和Tcl的新手。我正在尝试构建现有的Tcl代码来制作我自己的脚本。 问题是当我尝试使用和从我的tcl脚本中提取perl程序时,它会出现以下错误:

***invalid command name "*'"
while executing
"*' \
                    -close '*"
invoked from within
"set command "/usr/local/bin/perl /home/bin/perlscript \
                    -var SOURCE=$myings \
                    -var IN_LA..."***

我在tcl脚本中的代码如下所示:

set command "/usr/local/bin/perl /home/bin/perlscript \
                             -var SOURCE=$myings \
                             -var IN_LAYMAN=TRUE \
                             -open '[*' \
                             -close '*]' \
                             -open '[*' -close '*]' $mygsp -output run.file"

if {   [ file exists $mygsp ] && [file exists $myings ] } {
    if { [catch { open "|$command" } input] } {
           putmsg "Please check the following errors: $::errorInfo"
          } else {
           putmsg " Either the $mygsp or $myings is missing. Please check before   proceeding forward"
             }
}   

我怀疑使用'open'& amp; 'close'或'[*'spl charectors。你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

双引号分隔字符串中的所有'['字符都必须进行转义,否则TCL会尝试执行[...]块内的命令并将结果替换为字符串:

set command "/usr/local/bin/perl /home/bin/perlscript \
                         -var SOURCE=$myings \
                         -var IN_LAYMAN=TRUE \
                         -open '\[*' \
                         -close '*]' \
                         -open '\[*' -close '*]' $mygsp -output run.file"