出於某種原因,Perl中保持高速緩存我想要的目錄項讀取使用readdir:爲什麼Perl的readdir()緩存目錄條目?
opendir(SNIPPETS, $dir_snippets); # or die...
while (my $snippet = readdir(SNIPPETS))
{ print ">>>".$snippet."\n"; }
closedir(SNIPPETS);
由於我的目錄包含兩個文件,test.pl和test.man,我期待下面的輸出:
.
..
test.pl
test.man
不幸的Perl返回很多已經消失得無影無蹤,例如,因爲我試圖將其重命名的文件。之後我謹test.pl到test.yeah Perl會返回以下列表:
.
..
test.pl
test.yeah
test.man
什麼是對這種奇怪的行爲的原因是什麼? opendir,readdir和closedir的文檔沒有提到某種緩存機制。 「ls -l」清楚地列出了只有兩個文件。
兩個'readline'和'readdir'預讀和高速緩存。這是野獸的本質。 – tchrist 2011-02-26 18:13:02