是不是跟文件的打开方式有关?
用update方式打开
open(RESULT, "+<data file");
$update_pos = 20; #修改从第20偏移量开始
seek(RESULT, $update_pos, 0);
print RESULT "hihi";
close(RESULT);
您的意思是,把文件20行以后的内容删除,并替换成hihi吗
当然不是, 是把20-23的位置替换成"hihi"
别的内容不变
也可以用Mmap, Sys::Mmap
use Sys::Mmap;
open(UPDATE, "+<update.data");
...
mmap($data, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, UPDATE);
substr($data, 0, $filelength) =~ s/hihi/hahe/g; #应该保证不出SIGBUS错误
munmap($data);
close(UPDATE);
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 文件 如何 RESULT data 换成 UPDATE 打开 hihi 一个 update_pos |
注册
个人空间
