language/perl

[perl] 한자풀이 프로그램

alignG 2010. 8. 22. 15:04

제가 최근에 동양학쪽에 관심을 가지면서 많은 한자들을 접하게 되는데 사실 한자와는 담을 쌓고 살아왔던 인생이었기에 일일이 네이버 사전을 뒤지며 조금씩 익혀가고 있는데 영 속도가 나지 않아 좋은방법이 없을까 하다가 직접 프로그램을 만들어 보았습니다. 얼마 안걸릴줄 알았는데. 한자처리에 관한한 자료가 없어서 찾느라 시간이 좀 걸렸네요 ^^ 우분투에서 작성했구요. 윈도우 유져들은 perl설치하신뒤 사용하시면 되겟습니다. 소스는 아래에 ^^
#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use Encode qw(decode encode);
my $string = "";
print "한자풀이 하고 싶은 글을 입력해주세요 : \n";
$string = <>;
$string = decode("utf8", $string);
my $str_len = length($string);
my $newstring = "";
for(my $i=0;$i<$str_len;$i++){
        my $str_pice =  substr $string, $i, 1 . "\n";
        if($str_pice =~ /([\x{4E00}-\x{9FA5}]|[\x{F900}-\x{FA2D}])/){
                $str_pice = encode("utf8", $str_pice);
                my $url = "http://hanja.naver.com/hanja?q=" . $str_pice;
                my $content = get($url);
                $content =~ /<dd><strong>(.*)<\/strong>/;
                my $answer= encode("utf8", $1);
                $str_pice .= "(" .$answer . ")";
                $newstring .= $str_pice;
        }else{
                $str_pice = encode("utf8", $str_pice);
                $newstring .= $str_pice;
        }
}
print "\n\n=+==+==+==+==+==+==+==+==+==+=";
print "한자풀이";
print "=+==+==+==+==+==+==+==+==+==+=\n\n";
print $newstring . "\n";

이 스크립트를 메모장이나 vi를 사용해 컴퓨터에 .pl이라는 확장자로 저장하시고 실행은 위에 스크린샷의 방식대로 하시면 됩니다.

궁금한사항이 있으시면 댓글로 남겨주시길 ^^
반응형