sapphirecat has asked for the wisdom of the Perl Monks concerning the following question:
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?"
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Dangers of require 'file.pl'
by runrig (Abbot) on Feb 25, 2011 at 17:20 UTC | |
by sapphirecat (Acolyte) on Feb 25, 2011 at 18:32 UTC | |
by furry_marmot (Pilgrim) on Feb 25, 2011 at 21:48 UTC | |
|
Re: Dangers of require 'file.pl'
by ikegami (Patriarch) on Feb 26, 2011 at 09:34 UTC |