Re: [問題] Perl的seek 或sysseek想製造sparse file

看板Perl作者 (吃喝玩樂滿天下)時間17年前 (2008/07/27 00:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #18YqlbWE (Perl)
文章代碼(AID): #18YqlbWE (Perl)