in reply to Override the open builtin globally

When I use a lexical (open $file, ...) I get undef into $_[0].

Did you put a value into $file before passing it to open? Then why are you expecting something other than undef?