2013-03-11 40 views
1

我用readdir(DIR)讀取文件,但是當我使用爲什麼「打印readdir(DIR_HANDLE);」會彈出很多文件?

$file = readdir(DIR); 
print $file; 
print "\n"; 
sleep(2); 

它將打印文件一次;

但是當我使用

print readdir(DIR); 
print "\n"; 
sleep(2); 

它蹦出許多文件

有什麼錯呢?

感謝

+3

閱讀有關列表與標量上下文的信息。在打印中,您正在使用一個列表。 – stark 2013-03-11 03:07:29

+0

那麼readdir可以輸出列表和單個標量嗎? – user2131116 2013-03-11 03:11:41

+0

好的我知道了..... – user2131116 2013-03-11 03:16:05

回答

2

readdir沒有讀取文件。它掃描下一個目錄列表的目錄。

您可以在這裏檢查出perldocreaddir

它印只有一個文件,你的$file聲明的原因是因爲它是一個標量值。它只會從目錄句柄中讀取一次並返回一個列表。

更常見的情況是,當您想要從整個目錄讀取時,將其分配給一個列表,該列表將返回readdir,從而打印第二個示例中的所有目錄列表。

+0

我現在明白了.. – user2131116 2013-03-11 03:32:37

0

readdir在標量上下文中評估時返回下一個文件(或者讀取最後一個文件後的undef)。

my $file = readdir($fh); 

標量賦值運算符在標量上下文中評估其RHS操作數。


readdir當在列表上下文中計算時返回其餘文件。

my @files = readdir($fh); 

print在列表上下文中評估其參數列表。

相關問題