특정 글자의 "유니코드 값"을 구하는 방법입니다. 유니코드 값이란, 유니코드 번호, 즉 "유니코드 코드 포인트(Code Point)"입니다. 1바이트(8비트)인 아스키 코드와 달리, 2바이트(16비트)입니다.

우선 울트라에디트 등의 편집기를 사용하여, 펄 소스 자체를 "UTF-8 유니코드"로 변환해 주어야 합니다.

그런 후 펄 소스에

use utf8;

이런 프라그마를 삽입합니다. 그러면 이제 유니코드 문자열을 펄 소스에 쓸 수 있고, 펄의 내장 함수들도 유니코드 모드로 작동합니다.

이렇게 해 주지 않으면, ord() 함수가, 유니코드 값이 아닌 그냥 아스키 코드 값을 출력합니다.

ord() 함수로, "유니코드 문자 번호" 알아내기 예제


(UTF-8 유니코드로 다음 예제 소스를 저장해야 함)
#!/usr/bin/perl
use strict; use warnings;

use utf8;


  my $s = "가";
  printf("%04X\n", ord($s));
  # 출력 결과: AC00

  printf("%04X\n", ord("天"));
  # 출력 결과: 5929

  printf("%04X\n", ord("Z"));
  # 출력 결과: 005A



한글 낱자 "가"의 유니코드 값은, 즉 유니코드 코드 번호는 16진수로 0xAC00 입니다.

한자 "天"의 유니코드 값은 0x5929 입니다.


1바이트 알파벳 Z 는, 유니코드에서도, 아스키 코드와 같은 값인 0x5A 가 나옵니다.


[출처 : http://mwultong.blogspot.com/2007/01/perl-hangul-unicode-code-value.html]
#!/usr/bin/perl
use strict; use warnings;


while (<>) {                    # 파일 열어, 한 줄씩 읽기
    chomp;                        # 개행 문자 제거
    s/^\s+//;                     # 좌측에 공백 있으면 제거
    s/\s+$//;                     # 우측에 공백 있으면 제거
    push @_, $_ unless $_ eq "";  # (빈 문자열이 아닌 이상) 배열에 추가
}

@_ = sort {$a <=> $b} @_;       # 숫자 크기순으로 소트

print "$_\n" foreach (@_);      # 화면에 결과 출력

+ Recent posts