Thread Abbruch beim Einlesen einer Datei (3 answers)
Opened by lord_astfgl at 2007-07-06 13:51

lord_astfgl
 2007-07-06 13:51
#78253 #78253
User since
2007-07-06
2 Artikel
BenutzerIn
[default_avatar]
Ich habe eine Datei, in der binär-codiert double Werte stehen (je 8 Byte). Das Auslesen funktioniert, bis auf die Tatsache, dass read() nicht die ganze Datei liest, sondern vorher abbricht.

Mein (aufs wesentliche reduzierter) Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use strict;

my $diafile="RT_4.dia";
open(FDIA, $diafile) or die "cannot open $diafile";

my @s = stat($diafile);
print "Dateigroesse ",$s[7]," Bytes\n";

my $rec;
my $totlen=0;
my $template = "d";
my $len = length pack($template,0.);
while (1) {
my $res=read(FDIA,$rec,$len);
if (!defined($res)) {print $totlen," error"; last;};
if ($res==0) {print "OK\n"; last;};
if ($res<$len) {print $res,"<",$len," length_read=",$totlen+$res; last;};
$totlen+=$len;
}


ich erhalte dann als Ausgabe
Dateigroesse 1768 Bytes
1<8 length_read=1641

Die Datei und das Skipt gibts hier:
http://home.arcor.de/lord_astfgl/perl/

Dies passiert je Datei immer an der gleichen Stelle, bei verschiedenen Dateien an verschiedenen Stellen. Mit manchen Dateien funktioniert es auch fehlerfrei.

Ich bin noch recht neu in Perl. Gibts da evtl. eine eof Byte(sequenz), weshalb read() meint, es wäre am Ende?
Im Voraus vielen Dank für die Antworten\n\n

<!--EDIT|lord_astfgl|1183715551-->

View full thread Abbruch beim Einlesen einer Datei