将Tcl中的变量设置为perl返回的值

时间:2014-03-21 09:03:52

标签: perl tcl

我正在尝试使用以下命令,但它无法正常工作:

set t1 [exec perl check.pl report.txt 5]

perl文件check.pl从report.txt中提取5个值并返回。 check.pl在subrountine中返回。

t1为空。值未返回且未设置。 有没有办法做到这一点?

1 个答案:

答案 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