[問題] Perl的seek 或sysseek想製造sparse file
如果是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
有人知道原因嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.102.254
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):