The character "-" is treated specially and therefore "\-" is treated as a literal "-". #### if($data !~ /^[\ \-\~\007\012\015\035\036\037]*$/) { $data =~ tr/[\ \-\~\007\012\015\035\036\037]/ /cs; }