#!/usr/bin/perl -w use strict; my $LOGFILE; my $line; $LOGFILE = "access.log"; open(LOGFILE) or die("Could not open log file."); foreach $line () { # do line-by-line processing. } close(LOGFILE); I get a very surprising : $ perl prov.pl Use of uninitialized value in open at prov.pl line 7. Could not open log file. at prov.pl line 7.