2018년 03월 23일
modern perl 스타일로 한글 자르기
Perl Cookbook 2nd edition에서 유니코드 핸들링 참고
use v5.10;
use Encode;
my $kor = decode 'utf-8', "안녕하세요 Hello";
say encode 'utf-8', $kor;
my @lx = $kor =~ /(\X)/g;
say "length is " . scalar(@lx);
say encode 'utf-8', $lx[0]
결과는 아래처럼
>>
안녕하세요 Hello
length is 11
안
# by | 2018/03/23 14:02 | 트랙백 | 덧글(2)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
```
use utf8; # 이 파일 자체가 utf8로 인코딩되어 있음을 미리 알려줌
use v5.10;
use Encode;
my $kor = "안녕하세요 Hello";
...
```
이렇게 해주면 $kor 자체가 internal unicode variable이 됩니다.
나머지 코드는 그대로 쓰셔도 됩니다만 출력할때 매번 encode 'utf8'을 부르면 출력을 자주 하는 경우에 귀찮거나 불편할 수 있습니다. 그런때에 STDOUT으로 나갈때는 모두 utf8 으로 인코딩해라 라는 의미로 다음과 같이 쓰시면 불편함을 줄이실 수 있습니다.
```
binmode STDOUT, ":utf8";
...
say $lx[0];
```
유니코드 어려워요~^^ 랭귀지 자체에서 유니코드 제대로 잘 지원하는 언어도 꽤 드물고...
사실 'use utf8' 선언은 알고는 있었는데, 제가 요새 블로그를 일종의 기록장 처럼 쓰고 있어서 생략했는데, 보시는 분들도 있거늘, 그 점을 미처 고려못한 것 같습니다.
binmode 팁은 다음 부터는 꾸준히 활용해 보도록 할께요.
고맙습니다~~