首页 > 解决方案 > 在终端上打印脚本的结果(在后台运行)

问题描述

我正在编写一个 perl 脚本,它从中运行另一个 tcl 脚本。终端不打印任何内容并等待 tcl 脚本完成。

`chmod +x runme.tcl`; `./runme.tcl 2>&1`;

谁能帮助我如何在终端上打印 tcl 脚本的结果,而不是等待它完成?

谢谢

标签: perltcl

解决方案


您可以使用模块tcl直接运行脚本,而无需使用or :perlTclqxsystem

#!/usr/bin/env perl
use warnings;
use strict;
use Tcl;

Tcl->new->EvalFile("runme.tcl");

它将与 perl 脚本共享相同的标准输出。

如果您使用的是足够新的版本Tcl,您可以轻松地创建一个安全的解释器来评估脚本,以防它试图做任何令人讨厌的事情:

#!/usr/bin/env perl
use warnings;
use strict;
use Tcl v1.05;

my $interp = Tcl->new;
my $safeinterp = $interp->CreateSlave("safeinterp", 1);
$interp->Eval('interp share {} stdout safeinterp');
$interp->Eval('interp share {} stderr safeinterp');
$safeinterp->EvalFile("runme.tcl");

推荐阅读