2010-03-17 1 views

Antwort

12
open my $fh, '+<', $file  or die "open failed: $!\n"; 
my $byte; 
sysread($fh, $byte, 1) == 1 or die "read failed: $!\n"; 
seek($fh, 0, 0); 
syswrite($fh, $new_byte) == 1 or die "write failed: $!\n"; 
close $fh      or die "close failed: $!\n"; 
+0

Sie verpassen eine '" 'auf der syswrite Linie, aber es sieht wie folgt aus (richtig) auf Null-Byte-Dateien sterben. Daran hätte ich nicht gedacht, danke. – jnylen

+0

@jnylen: fixed, danke –

6

Viele Möglichkeiten, es zu tun. Ein effizienter Weg ist, um die Datei in einem Direktzugriffsmodus zu öffnen mit open $fh, '+<':

my $first_byte = chr(14);  # or whatever you want the first byte to be 
open my $fh, '+<', $the_file; 
seek $fh, 0, 0;    # optional - cursor is originally set to 0 
print $fh $first_byte;   # could also use write or syswrite functions 
close $fh; 
+0

Danke, dass du erklärt hast, was '' + <''tut - ich wünschte, ich könnte mehrere Lösungen prüfen. – jnylen

Verwandte Themen