Nope. It breaks down like this:
open (FILEHANDLE, "filename") opens for reading--can't be changed
open (FILEHANDLE, "<filename") same as above, but explicit
open (FILEHANDLE, ">filename") write to filename, writing over current
contents
open (FILEHANDLE, ">>filename") write to filename, appending to current
contents
Your changes will be saved nowhere but in memory; to save to a file
you have to create another file in write mode and explicitly output
to it. To change the original file, you'd have to read from it, store
the data somewhere else (memory or a temporary file), close the original
file, and then reopen it in write mode. Safe as a Volvo.
Enjoy,
--tashi daniels
On Tue, 5 Jun 2001, Brent Buckalew wrote:
>
> Now, does the Perl command below actually affect the <OUTFILE>? I suspect
> that it does and that's something that I can't do. The OUTFILE is
> something that has to stay as is. Thanks for the suggestion. Let me know
> if I'm wrong about that destruction of the OUTFILE.
>
> Brent
>
> >
> > How about something like this?
> >
> > # Get rid of all the lines up till the Nitrogen ones start:
> >
> > do {
> > $discard_line = <OUTFILE>;
> > } until ($line =~ /Log 10 Mean Ionisation/)
> >
> > # Then, process lines until no more Nitrogens:
> >
> > while (<OUTFILE>) #Current line becomes the variable $_
> > {
> > break unless (/Nitrogen/); #if no arguments, matches on $_
> > @values = split; #splits intelligently on whitespace, on $_
> > # Then process the current array . . .
> > }
> >
> >
> > This also saves you time on pattern matches . . .
> > Also, the array knows its own length if there will be a varying
> > number of parameters.
> >
> >
> > Okay, bye.
> >
> >
> >
> >
> > On Tue, 5 Jun 2001, Brent Buckalew wrote:
> >
> > > Hello all,
> > >
> > > This is similar to the problem I had before but the table that I'm reading
> > > from is a little bit different. We'll use the nitrogen as an example
> > > again.
> > >
> > > IN the test table there are four entires for nitrogen. Here they are.
> > >
> > > Nitrogen 0.00e+00 1.31e-02 9.86e-01 5.96e-04 0.00e+00 0.00e+00
> > > Nitrogen 9.99e-01 1.48e-03 1.59e-12 0.00e+00 0.00e+00 0.00e+00
> > > Nitrogen -30.000 -1.884 -0.006 -3.225
> > > Nitrogen 3.723 4.007 4.007 4.007
> > >
> > > The text that I'd like is the row of all negative numbers. Now, the perl
> > > command that I'm using to get this is the following:
> > >
> > > while(<OUTFILE>){
> > >
> > > if
> > > (/(Nitrogen)\s+(-\d+\.\d+)\s+(-\d+\.\d+)\s+(-\d+\.\d+)\s+(-\d+\.\d+)\s+(-\d+\.\d
> > > +)/)
> > > {$name = $1; $nitrogen1 = $2; $nitrogen2 =$3; $nitrogen3 = $4; $nitrogen4
> > > = $5; $nitrogen5 = $6;}
> > >
> > > }
> > >
> > > However, I believe this is choking when it gets to the first line that has
> > > nitrogen in it. It doesn't know what to do with the e's. What happens is
> > > that the material that I want never gets assigned to the variables. I've
> > > tested this by placing in the following print command.
> > >
> > > print COMPFILE "HEY, $nitrogen1, $nitrogen2, $nitrogen3, $nitrogen4,
> > > $nitrogen5 \n";
> > >
> > > Now, there is a key word which exists before getting to the desired line
> > > of Nitrogen and that's the following:
> > >
> > > Log10 Mean Ionisation
> > >
> > > So, is there a way of using this text in a while statement or something
> > > like that to get what I need? Or can I change the while statement
> > > above to get just the nitrogen line with just negative numbers? Thanks
> > > for your help.
> > >
> > > Brent
> > >
> > >
> >
> >
>