sub quote { ... s/([\0-\037\177-\377])/sprintf('\\x%02X',ord($1))/eg; ... }