今日、Unicodeブロックというものを初めて知りました。正規表現で利用できます。
例えば、半角英数字もしくは半角記号かどうかをチェックするときには、このように書けるんです。

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Encode qw(encode_utf8);

my $str = "aあ-い0bc〜d9e";

for ($str =~ /./g) {
    if (/\p{InBasicLatin}/) {
        print encode_utf8("$_ is latin\n");
    }
    else {
        print encode_utf8("$_ is not latin\n");
    }
}

\p{InBasicLatin} の部分が半角英数字と半角記号に全てマッチします。

a is latin
あ is not latin
- is latin
い is not latin
0 is latin
b is latin
c is latin
〜 is not latin
d is latin
9 is not latin
e is latin

ということで、Unicodeブロック便利そうです。(・∀・)
他にも使えそうなUnicodeブロックがあるのでまとめておきます〜

\p{InBasicLatin}                 # 半角英数字と半角記号
\p{InHiragana}                   # 平仮名
\p{InKatakana}                   # カタカナ
\p{InCJKUnifiedIdeographs}       # 漢字
\p{InCJKSymbolsAndPunctuation}   # 全角記号
\p{InHalfwidthAndFullwidthForms} # 半角カナなど(※0-9とかA-Zにもマッチするみたい・・)

にしても、こちらのサイトでも言われていますが、なぜ半角カナ専用のUnicodeブロックがないのかと小一時間(ry

注意して使っていかなくては。(´Д⊂)
このエントリーをはてなブックマークに追加