作者dipin (吃喝玩乐满天下)
看板Perl
标题Re: [问题] Perl的seek 或sysseek想制造sparse file
时间Sun Jul 27 00:08:04 2008
※ 引述《jlovet (Want 2 see u no more)》之铭言:
: 如果是C, 原本档案size 0
: seek到100的位置写一些东西,那,档案大小会是100+你写的东西
: 然後生出来的档案是一个sparse file
: #!/usr/bin/perl
: open INDEX,">>","my.idx";
: seek INDEX,100,0 or die "seek error";
: print tell INDEX;
: print INDEX "Hello World\n";
: print tell INDEX;
: close(INDEX);
: 在Perl里面,如果这样写,他只会把"Hello World\n"写到档案最前面
: 不会seek到100的位置,而且,用tell(INDEX) 两个都显示 -1
: 如果我把档案的模式改成
: #!/usr/bin/perl
: open INDEX,">","my.idx";
: seek INDEX,100,0 or die "seek error";
: print tell INDEX."\n";
: print INDEX "Hello World\n";
: print tell INDEX."\n";
: close(INDEX);
: 这样子seek会有用,但是因为 > 档案就被truncate掉了
: 结果要用
: open INDEX,"+<","my.idx"; 这样子,档案才可以seek,又不会被truncate
: 有人知道原因吗?
: 谢谢
好有趣的问题,
我想应该是不同的open方法,档案seek的index相对位置不同吧?
为什麽tell(INDEX)会是-1呀?
--
我是perl的初学者, 所以答覆还需请各位大大验证
因为文章有点久又没有回音就没用推文了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.56.137.23