Kipp, James wrote:
> Hi
> I have some C code that I need to convert to perl and I am pressed
> for time, which is why I am posting this. All the code does is read
> each character from either STDIN or a file and replaces any ASCII
> control characters with a space.
>
> Is the perl getc() function the best way to look at one char at a
> time?
>
> The C code looks like below. I have some ideas but I am not sure of
> the best way to represent these char ranges in perl
> --
> while ( !feof(fin) ) {
> ch=getc(fin);
>
> if ( (ch<=0176) && (ch>=040) || (ch=='\n') ) {
> putc( ch, stdout );
> } else {
> putc( ' ', stdout );
> }
>
> }
The following one-liner will do the trick:
perl -pe 'BEGIN {$/=\8192} tr/\040-\176/ /c' myfile
The /c on the tr/// operator complements the search range, so everything
*not* in the range 040 to 176 gets changed to a space.
The BEGIN block sets $/ so that input gets processed in 8kb chunks,
regardless of the format of the input files. (Can that be done with a
command-line option to perl?)
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]