This method may address issues if these are busy files. That is, leave the disk alone, do everything in RAM, then bother the disk when you're done.
(For the purists, only the salient features are included, not die or flock etc.)
#slurp the files into arrays open(FILE, 'filename_1'); @LINES_1 = <FILE>; close(FILE); open(FILE, 'filename_2'); @LINES_2 = <FILE>; close(FILE); open(FILE, 'filename_3'); @LINES_3 = <FILE>; close(FILE); # cycle through your file, pushing lines onto other files' arrays for $i (0 .. $#LINES_1) { if (condition_a) {push(@LINE_2, $LINES_1[$i]);}} if (condition_b) {push(@LINE_3, $LINES_1[$i]);}} } # write new arrays to files open(FILE, ">filename_2"); for my $i (0 .. $#LINES_2) {print FILE "$LINES_2[$i]";} close(FILE); open(FILE, ">filename_3"); for my $i (0 .. $#LINES_2) {print FILE "$LINES_3[$i]";} close(FILE);
In reply to Re: Re: Speed of opening and closing a file 1000s times
by punchcard_don
in thread Speed of opening and closing a file 1000s times
by seaver
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |