Rob Dixon wrote: > > John W. Krahn wrote: > > Greg Carrara wrote: > > > > > > Hello, > > > > Hello, > > > > > I'm trying to write a script that reads a file line by line and if > > > the line contains a space it puts quotation marks around it and > > > writes it to another file. I mostly have this working except that > > > in the case of the lines that contain the space it puts the > > > quotation mark at the beginning of the next line. My guess is that > > > print OUTFILE ($line); > > > also feeds a CR. Is there a way around this? > > > thanks, > > > gc > > > > > > unless (open(INFILE, "accounts.txt")) { > > > die ("Cannot open input file accounts.txt.\n"); > > > } > > > > You should include the $! variable in the error message so you know > > WHY > > it failed. > > > > open INFILE, 'accounts.txt' or die "Cannot open input file > > accounts.txt. $!\n"; > > > > > > > unless (open(OUTFILE, ">nospace.txt")) { > > > die ("Cannot open output file nospace.txt.\n"); > > > } > > > > open OUTFILE, '>nospace.txt' die "Cannot open output file nospace.txt. > > $!\n"; > > > > > > > $line = <INFILE>; > > > while ($line ne "") { > > > if ($line =~ / +/) { > > > print OUTFILE ('"'); > > > print OUTFILE ($line); > > > print OUTFILE ('"'); > > > } > > > else { > > > print OUTFILE ($line); > > > } > > > $line = <INFILE>; > > > } > > > } > > > > while ( <INFILE> ) { > > s/( +)/"$1"/g; > > print OUTFILE; > > } > > Your solution puts quotation marks around all contiguous strings > of spaces, while what is needed is to quote the entire line > if it contains a space. (I imagine this is a series of file paths.)
Ah yes, I guess I misread the problem. :-) while ( <INFILE> ) { s/^(.* .*)$/"$1"/; print OUTFILE; } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]