Thread Perl Speicherprobleme mit großen Dateien (W32 Version)
(31 answers)
Opened by Mapache at 2009-05-05 14:38
mach es doch so (ungetestet):
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!/usr/bin/perl use strict; use warnings; my $infile='/path/to/infile'; my $fh = new FileHandle($infile,'r'); die "ERROR Open $infile ($!)\n" unless(defined($fh)); my $data=''; my $line; my $buff; while(!$fh->eof()) { $line=''; # Daten einlesen solange kein "\n" oder "\r" kommt while(!index($data,"\x0A") && !index($data,"\x0D") ) { $fh->read($buff,1024); # anpassen wenn es zu langsam ist... $data.=$buff; } # erste Zeile Heraussplitten ("\n" und "\r") gehen verloren # das läuft solange wie $data noch Newlines enthalten # das "split" ist recht langsam, mit "index" und "substr" währe es schneller ($line,$data)=split(/[\x0A\x0D]+/,$data,2); working($line); } # jetzt noch den Rest verarbeiten... working($_) for(split(/[\x0A\x0D]+/,$data)); close($fh); exit(0); ######################################### # Verarbeiten ########################### ######################################### sub working { my $line=shift; # arbeite damit ... } Edit: kleine Ergänzung in Zeile 28 Last edited: 2009-05-05 18:48:52 +0200 (CEST) |