首先,我对Perl很新,所以我可能会遗漏一些明显的东西。这不是典型的“我想通过Perl运行shell命令”的问题。
我不想捕获所有的shell输出。我有一个智能写入终端的程序/脚本。我没有写它并且不知道它是如何工作的,但它似乎在打印一些初始化之后将视图移动到适当的位置,然后擦除先前的终端输出并将其写入(更新)直到它最终完成。我想从我的perl脚本中调用它,而不是将所有内容打印到文件中以获取它,因为打印到文件不能保持打印输出的智能。
我需要做的就是:
我可以在perl中执行此操作吗?
感谢。
答案 0 :(得分: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;
答案 1 :(得分:2)
system 'xterm', '-hold', '-e', $program;
其中$program
是您要运行的终端感知程序。
-hold
会导致xterm在程序退出后保持打开状态,等待您手动关闭它。
-e
指定要运行的程序或命令行。它及其参数必须出现在xterm命令行的最后。