Perl - системная команда печати на терминал? - PullRequest
3 голосов
/ 09 февраля 2012

Я пишу 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 ]

6 голосов
/ 09 февраля 2012

Я думаю, -n и -e получат отклик, потому что ваша версия echo не распознает эти параметры и обрабатывает их как буквальный текст для эха.

Но вы знаете, что Perl имеет егособственный инструмент для вывода текста: print.

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

Возможно, вам потребуется очистить буфер впоследствии:

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

или просто следующее, если вы не против отключить буферизацию:

$| = 1;

PS - Ваши цитаты (''echo ...'') не имеют смысла, но они превращаются в небытие, поэтому они не вызывают проблемы.

1 голос
/ 26 февраля 2014

Вы можете перенаправить выходы с помощью «>» и «2>» или можете использовать qx.Например, в случае qx вы можете написать

my $output = qx( $your_command );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...