我正在尝试使用以下命令,但它无法正常工作:
set t1 [exec perl check.pl report.txt 5]
perl文件check.pl从report.txt中提取5个值并返回。 check.pl在subrountine中返回。
t1为空。值未返回且未设置。 有没有办法做到这一点?
答案 0 :(得分:1)
问题可能出在你的check.pl中,你想要print
提取的值,以便从Tcl exec
返回值:
如果标准输出尚未重定向,则exec命令将返回管道中最后一个命令的标准输出,除非指定了“2> @ 1”,在这种情况下也包括标准错误。 (exec manual page - Tcl Built-In Commands)
例如,在tclsh
:
% set foo [exec perl -e "print 'foobar\n'"]
foobar
% puts $foo
foobar
为了进一步将输出解析为Tcl列表,您可能需要换行符split
(如果提取的值分别打印在各自的行上):
% set foolist [split [exec perl -e "print 'foo\nbar\n'"] "\n"]
foo bar
% llength $foolist
2
% lindex $foolist 1
bar