2012-02-09 6 views
2

필자는 터미널 탭의 타일을 변경할 수있는 Perl 스크립트를 작성하고 있지만, 실행할 때마다 "-n -e"가 터미널 행에 인쇄됩니다. 이러한 옵션을 남겨두면 빈 줄이 인쇄됩니다. perl 내에서 시스템 명령어를 실행할 수있는 방법이 있습니까? 터미널에 코드 잔여 물이 보이지 않습니까? echo의 버전이 이러한 옵션을 인식하고 그들에게 반향 리터럴 텍스트를 취급하지 않기 때문에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 

감사

+0

'시스템을 쓸 수 있습니다 "에코 -n -e ..."'여분의 따옴표없이. 이러한 이스케이프 된 따옴표를 사용하면 명령이 아닌 문자열을 쉘로 덤프 할 수 있습니다. –

+0

@Marc B, 아니요.'' 'echo -n -e ...' ''는 쉘에 대해'echo -n -e ...'와 동일합니다. – ikegami

답변

5

내가 -n 상상 -e는 에코 얻을.

하지만 Perl은 텍스트를 에코하기위한 자체 도구 인 print을 가지고 있습니다.

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

당신은 나중에 버퍼를 플러시해야 할 수도 있습니다

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

하거나 다음을 버퍼링 해제 괜찮다면 :

$| = 1; 

PS - 당신의 따옴표 (''echo ...'') 아무 의미가 없지만, 그들은 무너져 버려서 문제를 일으키지 않습니다.

+0

+1 "그러나 당신은 무엇을 압니다 ..." – TLP

0

출력을 '>'및 '2>'로 리디렉션하거나 qx를 사용할 수 있습니다. 예컨대 들어 QX의 경우에 당신이

my $output = qx($your_command);