-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjaso_hap.pl
executable file
·49 lines (42 loc) · 2.22 KB
/
jaso_hap.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl
#########################################################################
# 초성/중성/종성으로 분리된 한글을 합치기 #
# v1.0a #
# usage : #
# perl jaso_hap.pl "ㄱㅛㅇㅠㄱ" #
# perl jaso_hap.pl `cat 0.txt` #
# perl jaso_hap.pl `cat 0.txt`>1.txt #
# cf : 분리하는 것은 http://mwultong.blogspot.com/2006/03/perl.html #
# Made by Finfra.com #
# Managed by https://github.com/Finfra/jaso_hap #
#########################################################################
use strict; use warnings;
#use encoding "cp949";
use encoding "utf8";
#use 5.010;
use Unicode::Normalize;
my @source = (
0x1100,0x1101,0x1102,0x1113,0x1114,0x1115,0x115B,0x115C,0x115D,0x1103,0x1117,0x1104,0x115E,0xA961,0xA972,0xA963,0x1105,0xA964,0xA965,0x1118,0xA966,0x1119,0xA968,0xA969,0xA96B,0xA96C,0xA96E,0x111A,0x111B,0x1106,0xA96F,0x111C,0xA971,0x111D,0x1107,0x1120,0x1108,0x1121,0x1123,0x1127,0x1128,0x112A,0xA974,0x112B,0x1109,0x112D,0x112F,0x1130,0x1131,0x1132,0x110A,0x1136,0x1137,0x1139,0x113B,0x1140,0x110B,0x114C,0x110C,0x110D,0x110E,0x110F,0x1110,0x1111,0x1156,0x1157,0x1112);
my @target =(
0x11A8,0x11A9,0x11AB,0x11C5,0x11FF,0x11C6,0x11C7,0x11AC,0x11AD,0x11AE,0x11CA,0xD7CD,0x11CB,0xD7CF,0xD7D0,0xD7D2,0x11AF,0x11B0,0xD7D5,0x11CD,0x11CE,0x11D0,0x11B1,0x11B2,0x11D5,0x11B3,0x11D8,0x11B6,0xD7DD,0x11B7,0x11DA,0x11DC,0x11DD,0x11E2,0x11B8,0xD7E3,0xD7E6,0x11B9,0xD7E7,0xD7E8,0xD7E9,0x11E4,0x11E5,0x11E6,0x11BA,0x11E7,0x11E8,0x11E9,0xD7EA,0x11EA,0x11BB,0xD7EF,0xD7F0,0xD7F1,0xD7F2,0x11EB,0x11BC,0x11F0,0x11BD,0xD7F9,0x11BE,0x11BF,0x11C0,0x11C1,0x11F3,0x11F4,0x11C2);
my $str=$ARGV[0];
utf8::upgrade($str);
my $s=NFKC($str);
#print $s;
my @array = unpack "U*", $s;
my $v;
my $tmp;
my $r="\\x{";
foreach $v(@array){
my $i=0;
foreach $s(@source){
if($v == $s){
$v = $target[$i];
}
$i+=1;
}
$r=$r.sprintf("%X", $v)."}\\x{";
}
#print $r;
my $res= pack "U*",@array;
print NFKC($res);