用于运行具有多个文件句柄并生成结果输出文件的perl脚本的Tcl脚本?

时间:2016-04-13 08:06:47

标签: tcl

我需要通过tcl脚本运行具有多个文件句柄和用户数据的perl脚本,并生成结果输出文件。

tcl脚本(test.tcl)有以下行,并期望在folder1中生成perl脚本的结果输出文件。

protected Button MyButton1

test.pl代码如下。

exec perl \...\folder1\test.pl

这是代码的一部分,可变的“sum”将用于furtehr代码。最后,perl脚本将生成输出文本文件。如何使用tcl解释器提取perl脚本的用户数据并生成输出文件?

2 个答案:

答案 0 :(得分:1)

只需将Tcl的stdio频道连接到perl's

即可
exec perl test.pl <@stdin >@stdout 2>@stderr

答案 1 :(得分:0)

由于子流程(即perl程序)涉及stdin的多个用户输入,您必须从文件中提取它们。

% cat test.txt
10
20
% cat test.pl
print "Enter user data1: ";
my $data1 = <STDIN>;
print "Enter user data2: ";
my $data2 = <STDIN>;
my $sum = $data1 + $data2;
print "Result : $sum\n";
%
% exec perl test.pl < test.txt
Enter user data1: Enter user data2: Result : 30
%  

如果您希望它是一个实际的交互式会话,那么您应该使用Expect

#!/usr/bin/expect
spawn perl test.pl
expect {
    "data1: " {send "10\r";exp_continue}
    "data2: " {send "20\r";exp_continue}
     eof {puts "completed"}
}

输出

Enter user data1: 10
Enter user data2: 20
Result : 30
completed

参考: exec