2016-09-08 1 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"; 

이 큰 문제가되지 않습니다 :

또한, 여기 내 스크립트 (I 시도 두 가지 방법)입니다. 나는 누군가가 이것을 어떻게 달성 할 수 있는지 알고 있는지 궁금 할뿐입니다.

+1

줄을 공백으로 채우시겠습니까? : D –

답변

4

내 솔루션은 Term::Size::Any을 사용하여 터미널의 크기를 알아 내고 Text::Tabs\t을 공백으로 변환합니다. tabulator는 문자가 하나뿐이기 때문에 인쇄 할 때 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

관련 문제