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]

Reply via email to