in reply to Reading from a deleted file is futile

open ML, "</var/log/local2" || die $!;
You've got a precedence error there. Either always use or instead of || for flow control, or always use parans around your open (and other builtin) arguments.