open(FH,"<","$myfile") or die "could not open $myfile: $!"; while (<FH>) { # ...do something }
稍后在程序中,我尝试重新读取该文件(再次通过该文件):
while (<FH>) { # ...do something }
并且意识到它就像文件中的控件是否在EOF中,并且不会在文件的第一行中迭代….这是默认行为吗?如何解决这个问题?该文件很大,我不想将内存作为数组.那么我唯一的选择是关闭并再次打开文件?
seek FH,0;
或者,更冗长:
use Fcntl; seek FH,SEEK_SET;
请注意,如果您必须寻求输入,则极大地限制了您的工具的有用性,因为它不能用作过滤器.能够从管道读取是非常有用的.请记住,有57%的统计数字已经弥补,您应该意识到98%的追求自己的投入的方案是不必要的.尝试非常努力地处理您的数据,使您无需阅读两次.如果可能,您的程序将会更加有用.