Saturday, May 19, 2007
Perl 펄] getch 함수; 키보드에서 영문 1글자 입력 받기; Enter키 칠 필요 없이
아래 예제의 getAkey 서브루틴을 사용하면, C언어의 getch 함수처럼 사용자로부터 글자(알파벳) 한 자를 입력받되, 엔터키를 치지 않아도 되기에 편리합니다.
"Term::ReadKey" 라는 기본 모듈을 로딩해 주어야 합니다.
입력한 키가 화면에 출력되지 않게 하려면 print $key; 라는 줄을 삭제하면 됩니다.
대소문자 구분하여 입력받으려면 return lc($key); 를 return $key; 로 고치면 됩니다.
파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
실행 결과 화면:
▶▶ Perl 펄] 사용자 문자열 입력 받기; 키보드 문장 입력; Input STDIN
"Term::ReadKey" 라는 기본 모듈을 로딩해 주어야 합니다.
입력한 키가 화면에 출력되지 않게 하려면 print $key; 라는 줄을 삭제하면 됩니다.
대소문자 구분하여 입력받으려면 return lc($key); 를 return $key; 로 고치면 됩니다.
사용자 입력, 한 글자만 받기 예제
파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;
use Term::ReadKey;
print "아무키나 누르세요.\n";
my $k = getAkey();
print "\n[$k] 키를 누르셨군요.\n";
# 키보드에서 영문 딱 1글자만 입력받는 함수 (Enter키 칠 필요 없음)
sub getAkey {
ReadMode 'cbreak';
my $key = ReadKey(0);
print $key; # echo 가 안되어서 인위적으로 출력
ReadMode 'normal';
return lc($key); # 소문자로 변환한 후 반환
}
use strict; use warnings;
use Term::ReadKey;
print "아무키나 누르세요.\n";
my $k = getAkey();
print "\n[$k] 키를 누르셨군요.\n";
# 키보드에서 영문 딱 1글자만 입력받는 함수 (Enter키 칠 필요 없음)
sub getAkey {
ReadMode 'cbreak';
my $key = ReadKey(0);
print $key; # echo 가 안되어서 인위적으로 출력
ReadMode 'normal';
return lc($key); # 소문자로 변환한 후 반환
}
실행 결과 화면:
D:\Z>example.pl
아무키나 누르세요.
y
[y] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
Y
[y] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
N
[n] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
n
[n] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
7
[7] 키를 누르셨군요.
D:\Z>
아무키나 누르세요.
y
[y] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
Y
[y] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
N
[n] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
n
[n] 키를 누르셨군요.
D:\Z>example.pl
아무키나 누르세요.
7
[7] 키를 누르셨군요.
D:\Z>
▶▶ Perl 펄] 사용자 문자열 입력 받기; 키보드 문장 입력; Input STDIN
tag: perl
Perl | 펄
<< Home