perl - 在终端上打印脚本的结果(在后台运行)
问题描述
我正在编写一个 perl 脚本,它从中运行另一个 tcl 脚本。终端不打印任何内容并等待 tcl 脚本完成。
`chmod +x runme.tcl`; `./runme.tcl 2>&1`;
谁能帮助我如何在终端上打印 tcl 脚本的结果,而不是等待它完成?
谢谢
解决方案
您可以使用模块tcl
直接运行脚本,而无需使用or :perl
Tcl
qx
system
#!/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");
推荐阅读
- python-3.x - 来自系列的数据框组装
- mysql - MySQL 死锁与复合主键和触发自动增量
- ruby-on-rails - 将数据从旧版应用程序移动到新的 Rails 应用程序
- node.js - 使用来自 gmail 的 Nodemailer 发送电子邮件
- android - 寻找无需恢复出厂设置即可更新设备所有者应用的解决方案
- r - 在 R 中的 plotly 直方图函数中自定义 bin 宽度
- regex - 正则表达式任何字符,只要字符相同
- python - 如何更新嵌套字典中键的值?
- javascript - 解决待处理的并行承诺
- javascript - 用 angular.forEach 替换 json 中的对象