Depending on what you consider a "control character", the below snippets will
or won't do what you need :
perl -pe "s/[\000-\037]//g"
This will delete all characters with a character code
below 32 (space) from the file. Note that also carriage return
and linefeed fall under this.
And here's the checker to see if your file contains
bad characters.
perl -ne "die q(Bad character on line $.\n) if /[\000-\037]/"
If you want to exclude certain characters from that range
(for example CR and LF), you must create the subranges
around the characters you don't want.
Update: Here are the REs modified to allow CR and LF
in your file :
perl -pe "s/[\000-\011\013\014\016-\037]//g"
perl -ne "die q(Bad character on line $.\n) if /[\000-\011\013\014\016
+-\037]/"
Note that maybe the "wrong" characters also occur,
because you are transferring your files via ftp
in ASCII mode instead of binary mode (or binary mode instead
of ASCII mode) or from an EBCDIC system to an ASCII system or vice
versa without the proper conversion.
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The
$d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider
($c = $d->accept())->get_request(); $c->send_response( new #in the
HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
|