2016-09-08 23 views
4

WindowsではWin32 :: Console :: ANSIと一緒にTerm :: ANSIColorを使っています。 私はたいていの場合、自分のスクリプトに色のついた印刷を使用して、重要な情報などを強調します。Perl Ansiの色を使って画面全体を色づける

しかし、私は最初に動作するものを試してみましたが、どうしたらいいかわかりません。私は灰色/白の背景の上に印刷するとき、それがどのように見えるか

What it looks like

そして、何が欲しい(私はそれを印刷する方法を見て編集)されています

What it should look like

このように、ANSIのエスケープシーケンスについて知っている人がいるかどうかは疑問です。私は、改行だけでなく色で印刷している部分全体を塗りつぶします。

はまた、ここに私のスクリプトは、(私が試した二つの方法)です:

print color('bold blue on_white'), "\tnr\tisiNdebele\n"; 
print colored ['bold blue on_white'], "\tnso\tSepedi\n"; 

これは大きな問題ではありません。私は誰かが私がこれをどのように達成できるかを知っているかどうか疑問に思っています。

+1

スペースをスペースで埋めてください。 :D –

答えて

4

私の解決策は、Term::Size::Anyを使用して端末の大きさを把握し、Text::Tabs\tをスペースに変換します。タブレーターは1文字分の幅しかないので、印刷するときは4または8などのスペースに変換されるため、これを行う必要があります。

use strict; 
use warnings; 
use Term::Size::Any 'chars'; 
use Term::ANSIColor; 
use Text::Tabs 'expand'; 

my ($columns, $rows) = chars; 

sub full_background { 
    my ($text) = @_; 

    chomp $text; 
    return sprintf(qq{%-${columns}s}, expand($text)) . "\n"; 
} 

print color('bold blue on_white'), full_background("\tnr\tisiNdebele\n"); 
print colored ['bold blue on_red'], full_background("\tnso\tSepedi\n"); 

これは次のようなものです。

enter image description here

+1

ありがとう!これは私のために働いた。 Windows上でさえ! – amateurjustin

関連する問題