阅读文件 foreach 与 while
当读取一个可能很大的文件时,while
循环比 foreach
具有显着的内存优势。以下将按记录读取文件记录(默认情况下,记录表示一行,由 $/
指定),在读取时将每个记录分配给 $_
:
while(<$fh>) {
print;
}
该钻石运算符做一些神奇在这里,以确保仅环终止在结束文件,而不是如在只包含一个 0
字线。
以下循环似乎工作原理相同,但它在列表上下文中计算菱形运算符,导致整个文件一次性读取:
foreach(<$fh>) {
print;
}
如果你无论如何一次操作一条记录,这可能会导致巨大的内存浪费,因此应该避免。