2

首先,我对 Perl 很陌生,所以我可能会遗漏一些明显的东西。这不是典型的“我想通过 Perl 运行 shell 命令”问题。

我不想捕获所有的 shell 输出。我有一个可以智能地写入终端的程序/脚本。我没有写它,也不知道它是如何工作的,但它似乎在打印一些初始化后将视图移动到适当的位置,然后擦除以前的终端输出并覆盖它(更新),直到它最终完成。我想从我的 perl 脚本中调用它,而不是将所有内容打印到文件中以获取它,因为打印到文件并不能保持打印输出的智能。

我需要做的就是:

  1. 在我的 perl 脚本中打开一个 xterm
  2. 在该终端中进行系统调用
  3. 让那个终端一直保持到我手动退出它

我可以在 perl 中做到这一点吗?

谢谢。

4

2 回答 2

2

尝试通过示例执行此操作:

#!/usr/bin/env perl

use strict; use warnings;
use autodie;

open my $term, '| xterm -hold -e $(</dev/stdin)';
foreach my $dir (qw|/etc /usr /home|) {
    print $term "ls $dir\n"; # do anything else you'd like than "ls $dir" here
}
close $term;
于 2013-09-23T23:16:39.377 回答
2
system 'xterm', '-hold', '-e', $program;

$program您要运行的终端感知程序在哪里。

-hold导致 xterm 在程序退出后保持打开状态,等待您手动关闭它。

-e指定要运行的程序或命令行。它和它的参数必须出现在 xterm 命令行的最后。

于 2013-09-23T23:16:40.203 回答