2010-03-17 27 views

Trả lời

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

Bạn đang thiếu một ''' trên dòng syswrite, nhưng có vẻ như điều này sẽ đúng (chết) trên các tệp zero-byte. Tôi sẽ không nghĩ về điều đó, cảm ơn – jnylen

+0

@jnylen: cố định, cảm ơn –

6

Nhiều cách để thực hiện. Một cách hiệu quả là mở tệp ở chế độ truy cập ngẫu nhiên với 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

Cảm ơn bạn đã giải thích những gì ''+ <'' làm - Tôi ước tôi có thể kiểm tra nhiều giải pháp. – jnylen

Các vấn đề liên quan