まとめ。Shift_JISの半角カナを全角に変換。
my %han2zen = { >>88参照 };
my $re_zen = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'; # 全角
my $re_han = '[\xa1-\xdf]'; # 半角カナ
my $re_dak = '[\xde\xdf]'; # 半角の濁点と半濁点

my $s = "(゚д゚)ウマー(゚Д゚)げ?";
$s =~ s/($re_zen|$re_han$re_dak?)/$han2zen{$1} or $1/ge;
print "$s\n";