我有一个包含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
。
答案 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>