2012-02-09 18 views
2

私はターミナル・タブのタイルを変更できるPerlスクリプトを書いていますが、実行するたびにターミナル・ラインに "-n -e"が出力されます。これらのオプションを外しておくと、空白の行だけが表示されます。 perlの中でシステムコマンドを実行する方法はありますか?私の端末に残っているコードはありませんか?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

私はechoのバージョンがこれらのオプションを認識し、エコーするリテラルテキストとして扱われませんので、エコーを取得-e-nを想像して。

しかし、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); 
関連する問題