正規表現ってそんなわかりにくいのかな。

>>110,115
その場合こう。
というかちょっと数行に分けて書き換えてみるからこれでわかって。

my $reg_alpha = qr/(?>[\t\r\n\x20-\x7e]+)/; # アルファベットの連続
my $reg_han_kana = qr/(?>[\xa1-\xdf]+)/; # 半角カナの連続
my $reg_multi = qr/(?>(?:[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])+)/; # 2バイト文字の連続

$GET_hoge =~ s/^((?:$reg_alpha|$reg_multi|$reg_han_kana)*).*$/$1/;

テストはしてない。