2009년 8월 6일 목요일

[Perl] 영타->한타 변환 (모듈 사용)

#####################################################
# en-co_convert.pl
use Lingua::KO::TypoCorrector;

my $asdf = '<누군가> TNLVMXMZLRK DKSQKWUDY';
$asdf =~ s/([ASDFGHJKLZXCVBNMYUI])/lc($1)/eg;

while ( $asdf ) {
print toKorean($&) if $asdf =~ s/^\w+//;
print $& if $asdf =~ s/^\W+//;
exit if $n++ > 20; # 혹시 예상하지 못한 문제로 무한루프를 돌면 안 되니까(...)
}
######################################################

결과
$ ./en-co_convert.pl
<누군가> 쒸프트키까 안빠쪄요



원래는 IRC에서 누가 한글이 안 쳐지면 하게 만든 스크립트인데(이런 건 꽤 돌아다니지만 내 봇에도 넣고 싶었다.)
그거 때문에 자소 합치는 스크립트를 열심히 머리 굴려서 짜게 됐던 거다. 근데, 모듈이 이미 존재하더라.
JEEN 님께서 작성해 두셨다. 저런 거 까지 있을줄이야……
TypoCorrenctor

freenode #perl-kr 에서 자소 융합 모듈에 대해서 얘기가 나왔는데,(아마 나의 안습한 포스팅을 보고 얘기를 하신게 아닌가 싶다. 아마 이 포스팅도 보실 것 같다. 무서워) 아마 유니코드에서 초성 중성 종성과 그냥 키보드로 타이핑하는 자음, 모음에는 키의 차이가 있다고 한다. 내가 사용하려던 목적과는 약간 어울리지 않았던 것이겠지……
확실히, 분리는 그럭저럭 되는 것 같았는데 폰트가 달랐고 글자 모양도 달랐고; 직접 키보드 초, 중, 종성에 대한 값 ('\x{1101}' 같은 것들)을 넣었다면 작동했을지는 모르겠지만 난 그러기가 귀찮았다. 귀찮은 건 미덕이라지 않은가…… 아무튼 더 귀찮아서 검색을 열심히 했다면 스스로 모듈을 찾을 수 있었겠지만, 미덕이 모자라 귀찮음을 무릅쓰고 저런 일을 했으니 안습.


위의 스크립트에 대해서 변명을 좀 해보자면,
나는 \w 가 허용하는 문자들의 ord를 확인해 본 적이 없다. 알 수 없는 곳에서 버그가 날지도 모른다는 것이겠지;

댓글 1개:

  1. \w 는 숫자, 영문만 적용된다고 한다. 적절할지도;

    답글삭제