[perl] [cpan] Term::ReadKey , Term::ANSIColor 콘솔 입력 모드 및 색상 모듈

sudo cpan install Term::ReadKey

로 다운 받는다.

Term::ReadKey;

ReadMode MODE[,Filehandle]

MODE는 정수형으로 써야 하고 다음의 종류가 있다.

0 : 원래대로 돌려 놓는다.
1 : 키를 입력한 후 엔터를 쳐야 적용이 된다.
2 : 키를 입력한 후 엔터를 쳐야 적용되고 입력값이 화면에 뜨지 않는다. 그래서 비밀번호 사용시 용이하다.
3 : 키를 입력하는 순간 적용이 된다.
4 : 입력 값을 가공하지 않는다.
5 : 입력 값을 가공하지 않고 CR/LF까지 가공하지 않는다.

위의 함수는 다른 핸들을 사용하지 않으면 자동으로 STDIN 핸들을 사용한다.

0부터 5까지는 각각 특별한 속성을 가지고 있다

0번 모드는 전에 셋팅 되어 있던 모드를 기본 셋팅으로 돌려 놓는다.

5번 모드는 4번 모드와 CR/LF 번역을 제외하고 비슷한 동작을 한다.

그러나 윈도우에서는 4번모드와 5번 모드는 다르지 않다.

ReadKey MODE[,Filehandle]

MODE는 정수형으로 써야 하고 다음 종류가 있다.

0 : 문자 하나 입력 받는다. 입력 대기상태로 들어간다.
-1 : 문자 하나 입력 받는데 입력 대기상태로 들어가지 않는다.
0보다 큰 수 : 0보다 큰 수를 넣으면 넣은 수만큼 대기시킨다. 대기 중 입력을 하면 바로 진행된다.

*여기서 사용하는 MODE는 결국 시간이다.

만약에 파일핸들을 쓰지 않으면 기본적으로 STDIN이 동작한다.

-1 모드를 사용할 경우 non-block 모드이기 때문에 반복을 하지 않으면

원하는 동작을 얻어낼 수 없다.

http://search.cpan.org/~kjalb/TermReadKey-2.14/ReadKey.pm

에서 자세한 메소드들을 볼 수 있다.

use strict;
use warnings;
use Term::ReadKey;
ReadMode(3);
my $c=ReadKey(0);
print $c;
ReadMode(0);

위 소스는 visual c의 <conio.h> 의 getch 를 흉내낸 것이다.
콘솔용 게임을 만들기에 필수적인 요소이다.

Term::ANSIColor

에는 간단하게 두가지 메소드가있다.

color 과 colored 이다.

color는 한번 지정하면 계속 쓸수있고, colored는 출력한번만 원하는 색상으로 한다.

print colored("Yellow on magenta.", 'text'); 와 같이 쓰면 magenta 배경에 노란 text가 출력된다.

color(색 서식 문자열)
colored( [색 서식 문자열] , 출력 문자열)

로써

글꼴 특성

CLEAR RESET BOLD DARK
FAINT ITALIC UNDERLINE UNDERSCORE
BLINK REVERSE CONCEALED

글자색

BLACK RED GREEN YELLOW
BLUE MAGENTA CYAN WHITE
BRIGHT_BLACK BRIGHT_RED BRIGHT_GREEN BRIGHT_YELLOW
BRIGHT_BLUE BRIGHT_MAGENTA BRIGHT_CYAN BRIGHT_WHITE

배경색

ON_BLACK ON_RED ON_GREEN ON_YELLOW
ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE
ON_BRIGHT_BLACK ON_BRIGHT_RED ON_BRIGHT_GREEN ON_BRIGHT_YELLOW
ON_BRIGHT_BLUE ON_BRIGHT_MAGENTA ON_BRIGHT_CYAN ON_BRIGHT_WHITE

위 글꼴특성 , 글자색 , 배경색을 순서대로 사용할 수 있다.

리눅스 터미널 모드에서는 BRIGHT모드나 글꼴을 지정할수 없다.