Ответ 1
Namespace
- общий вычислительный термин, означающий контейнер для отдельного набора идентификаторов. Один и тот же идентификатор может отображаться независимо в разных пространствах имен и ссылаться на разные объекты, а полнофункциональный идентификатор, который однозначно идентифицирует объект, состоит из пространства имен плюс идентификатор.
Perl реализует пространства имен, используя package
.
Модуль Perl совсем другой. Это часть кода Perl, которая может быть включена в любую программу с ключевым словом use
. Имя файла должно заканчиваться на .pm
- для P erl M odule - и содержащийся в нем код должен иметь оператор package
, используя имя пакета, которое эквивалентно имя файла, включая его путь. Например, модуль, написанный в файле с именем My/Useful/Module.pm
, должен иметь оператор package
, например package My::Useful::Module
.
То, о чем вы, возможно, и думали, является классом, который, опять же, является общим вычислительным термином, на этот раз подразумевает тип объектно-ориентированных данных. Perl использует свои пакеты как имена классов, а объектно-ориентированный модуль будет иметь подпрограмму конструктора - обычно называемую new
-, которая вернет ссылку на данные, которые были blessed
, чтобы заставить его вести себя объектно-ориентированным способом. Ни в коем случае все модули Perl являются объектно-ориентированными: некоторые могут быть простыми библиотеками подпрограмм.