Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^3: Only last record is written to the output file instead of all records

by davido (Cardinal)
on Nov 17, 2008 at 07:29 UTC ( [id://724014]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Only last record is written to the output file instead of all records
in thread Only last record is written to the output file instead of all records

Test for the condition prior to entering the loop, OR, open within the loop, but on each iteration check to see if the file is already open. Easy way to do that would be to use a lexical filehandle, scoped to just outside the loop. Here's an example:

{ my $fh; while ( ....condition.... ) { unless( defined( $fh ) ) { open $fh, '>', $filename or die $!; } # ....do your stuff... } close $fh or die $!; }

Dave

  • Comment on Re^3: Only last record is written to the output file instead of all records
  • Download Code

Replies are listed 'Best First'.
Re^4: Only last record is written to the output file instead of all records
by jwkrahn (Abbot) on Nov 17, 2008 at 09:30 UTC

    Better to use fileno to test filehandles as a filehandle can be defined and closed:

    $ perl -le' print defined $FH ? "defined" : "not defined"; print fileno $FH ? "open" : "not open"; open my $FH, "<", "test.txt" or die "test.txt: $!"; print defined $FH ? "defined" : "not defined"; print fileno $FH ? "open" : "not open"; close $FH; print defined $FH ? "defined" : "not defined"; print fileno $FH ? "open" : "not open"; ' not defined not open defined open defined not open

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://724014]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2024-04-18 22:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found