# from Michael G Schwern
# on Friday 02 December 2011 19:10:
>> Module: I actually avoid using the term Module because I think it is
>> often misused. I feel that a Module is a physical file (i.e.
>> something that you "use"). But some folks use the terms Module and
>> Package interchangeably. To be precise, CPAN (and Pinto) index
>> Packages not Modules. So when you ask cpan[1] to install Foo::Bar,
>> what you actually install is an Archive that contains some Module
>> that provides Package Foo::Bar, and that Module may or may not be
>> called Foo/Bar.pm. At least, that's how I understand it.
>
>Agreed that "module" is overloaded. I would associated it either with
>the .pm file or with the distribution. Probably best to avoid it all
> together.
True. But, what do you call:
1) The thing which is a first argument to use() ?
(it's shaped like a package name, but means a file to be loaded
(without accounting for subrefs in @INC))
2) The "Foo/Bar.pm" argument to require() ?
I would say that:
1) "Foo::Bar" in that usage is a "module name".
2) "Foo/Bar.pm" is a "module path"
The distinction between a "module name" and a package, is that a module
name can be translated into a module path with:
($name = $path . '.pm') =~ s{::}{/}g;
--Eric
--
Any sufficiently advanced incompetence is indistinguishable from malice.
--The Napoleon-Clarke Law
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------