Thread Perl Speicherprobleme mit großen Dateien (W32 Version) (31 answers)
Opened by Mapache at 2009-05-05 14:38

topeg
 2009-05-05 18:35
#121244 #121244
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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)

View full thread Perl Speicherprobleme mit großen Dateien (W32 Version)