@buf = ; # you reading all lines of FILE into @buf foreach $line (@buf) { # OK! (well, "my $line" would be better) $line = ; # but now reading again a single line !?! # which is undef after EOF