1

我是 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"
             }
}   

我怀疑问题出在“打开”和“关闭”或“[*”spl 字符的使用中。你能帮我吗?

4

1 回答 1

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"
于 2013-11-07T00:56:26.397 回答