如何从tcl脚本调用Perl脚本

时间:2014-01-13 23:43:51

标签: perl tcl

我有一个包含4个perl命令的文件, 我想从tcl打开文件并执行每个perl命令。

TCL脚本

runcmds $file

proc runcmds {file} {

    set fileid [open $file "r"]
    set options [read $fileid]
    close $fileid

    set options [split $options "\n"]    #saperating each commad  with new line

    foreach line $options {
    exec perl $line  
    }
}

执行上述脚本时 我收到的错误为"can't open the perl script /../../ : No Such file or directory " Use -S to search $PATH for it

1 个答案:

答案 0 :(得分:2)

tl; dr:您缺少-e,导致您的脚本被解释为文件名。


从Tcl内部运行perl命令:

proc perl {script args} {
    exec perl -e $script {*}$args
    # or in 8.4: eval [list perl -e $script] $args
}

然后你可以这样做:

puts [perl {
    print "Hello "
    print "World\n"
}]

这是对的,Tcl中的任意perl脚本。您甚至可以根据需要传递其他参数;通过@ARGV从perl访问。 (您需要明确添加其他选项,例如-p。)

请注意,这可以传递整个脚本;你不需要拆分它们(也许不应该拆分;你可以用单行做很多但是它们往往很难维护,并且没有技术上的理由要求它)。< / p>