UTF-8対応です。
#全て半角カタカナか?
#Perlの正規表現で、渡された文字列が全て半角カタカナかチェックします。(UTF-8向け)
#Perl 正規表現 半角カタカナ UTF8
$str = "。アイウエオカキクケコサシスセソタチツテトナニヌネノハイフヘホマミムメモラリルレロヤユヨワン゚";
if ( $str =~ /^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが半角カタカナである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが半角カタカナではない\n"));
}
#↓
#"すべて半角カタカナである"
※標準出力をutf8→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。