>  2008/09/27 (土) 05:19:28        [qwerty]
> > 自己レス
> > $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ( "C", hex ( $1 ) )/eg;
> > &jcode'convert ( *value, 'sjis' );
> > の直後に以下のコードでとりあえず回避できるかな(;´Д`)
> > $&とかsubstr()とかチョーダサイので何とかしたいけど眠いのでもういいや
> > my $tmp = $value;
> > $value = '';
> > while (length($tmp)) {
> >   if ($tmp =~ /^([\x09\x0A\x0D\x20-\x7E\xA1-\xDF]|[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC])+/) {
> >     $value = $&;
> >     substr($tmp,0,length($&)) = '';
> >   } else {
> >     substr($tmp,0,1) = '';
> >   }
> > }
> 確かにごり押しだな(;´Д`)スマートじゃない

綺麗にしてください(;´Д`)
何となくいったん別の文字コードにしてから無効文字除去してまたsjisに戻るコードの方が綺麗になる気がする
深海さんと協力してブラッシュアップお願いします(;´Д`)

参考:2008/09/27(土)05時16分57秒