Unicode16進数で指定したコードポイントの範囲の文字を確認する


Perl では、1 .. 10 のように範囲を指定して連続した整数値の配列を得ることができる。

my @x = 1 .. 10;


数値を16進数で表記したい場合は、先頭に「0x」をつける。

my @x = 0x30A0 .. 0x30FF;

のように、範囲も指定できる



コードポイントを実際の文字に変換するのには、pack を使う。



perldoc -f pack

U A Unicode character number. Encodes to UTF‐8 internally
(or UTF‐EBCDIC in EBCDIC platforms).


たとえば、Unicodeプロパティの \p{InKatakana} に相当する 0x30A0 .. 0x30FF の実際の文字を調べたい場合。

use strict;
use warnings;
binmode STDOUT => ':utf8';

for my $c ( 0x30a0 .. 0x30ff ) {
    printf qq{%04X\t'%s'\n} => $c, pack( "U4", $c );
}

シェルの文字コードは、UTF8. perl5.8以降