At Is "use" same as include?, ikegami notes that "...loading a file without a package using require is wrong."
I'm currently working with a system which does things like require '../common/vars.pl'; to define subs or variables for the code that did the require (and vice-versa; some required files use the global $dbh). The required files do not establish their own package. I believe that this is the situation that ikegami was calling wrong.
I have already been burned by trying to define a constant in a required file (and found the reason). I can also see that plain "require" adds to the namespace every non-lexical in the required file, thus inheriting many arguments against "from foo import *" in Python.
I understand the proper path is to replace require with use and Exporter. Until that glorious day, I am seeking wisdom on any other dangers with require 'file.pl' for which I should be alert. My curiosity also leads me to ask: "Is 'require'ing a file that does define a package acceptable, then? Perhaps because it won't pollute the caller's namespace?"
In reply to Dangers of require 'file.pl' by sapphirecat
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |