$aと$bは使うなと何度言ったら・・・って突っ込みは置いといて

変数にs/[\r\n\s]//g;を通してからprintしたら治ったり?

URI::Escape;してprint uri_escape($a,"\0-\377");とかして
変なコードはいってないか見てみたら?