Perl - 系统命令打印到终端?

时间:2012-02-09 03:22:49

标签: perl

我正在编写一个Perl脚本,允许我更改终端标签的图块,但是,每次运行它时,“ - n -e”都会打印到我的终端线。如果我保留这些选项,只需打印一个空白行。有没有什么方法可以在perl中执行系统命令,而且我的终端上没有显示任何代码残留?

  1 #!/usr/bin/perl
  2 #sets the title on terminal tabs (mac OSX)
  3 
  4 #use strict;
  5 use warnings;
  6  
  7 #sets title of term window to input from user.  
  8 my $textline="\'echo -n -e \"\\033]0;";
  9 $textline = $textline . "@ARGV" . '\007"\'';
 10 
 11 system "\'$textline\'"; 
 12 

由于

2 个答案:

答案 0 :(得分:6)

我想-n-e得到回应,因为您的echo版本无法识别这些选项并将其视为文字文本以进行回应。

但是你知道吗,Perl有自己的用于回显文本的工具:print

print("\033]0;$title\007");

之后您可能需要刷新缓冲区:

use IO::Handle qw( );
STDOUT->flush();

如果您不介意关闭缓冲,则只需执行以下操作:

$| = 1;

PS - 你的引号(''echo ...'')毫无意义,但它们会陷入虚无,所以它们不会引起问题。

答案 1 :(得分:1)

您可以按'>'重定向输出和'2>'或者你可以使用qx。 例如,在qx情况下,您可以编写

my $output = qx( $your_command );