open(IN,$log) || die $!, "\n"; #### if ( $_ !~ m/$i/ ) { print; } #### open FH, "filename" or die $!; #will read as its meant to: open(FH,"filename") or die $!; open FH, "filename" || die $!; #will read as: open FH,("filename" || die $!); which is not good since the only time #this expression will be treated as false is in cases where filename is an undefined expression(0,"",or undefined scalar) #but unrecognized file names will not be evaluated as false so the die will serve no purpose and the the script will continue to run