Что является значением и что является эффектом чего-то вроде этого (я думаю, что это объектно-ориентировано):
use My::Confusing::Code
{
CITY => { MODIFY => 1,
DEFAULT => My::Even::more::complicated->func(),
},
STATE => { MODIFY => 1,
DEFAULT => 'Concatenate()',
},
COUNTRY => { MODIFY => 1,
REQUIRED => 0,
DEFAULT => 'Gabon',
},
}
Что было бы Мой:: Путание:: пакет/модуль/класс Кода делает с материалом в фигурных скобках. Фигурные скобки включают блок кода или ссылку хеша?
Это хэш-ссылка.
Когда вы делаете use Module::Foo @stuff;
, происходит следующее:
BEGIN {
require "Module/Foo.pm";
Module::Foo->import( @stuff );
};
Обычно параметры, передаваемые в import
, используются для запроса на экспорт символов в ваше пространство имен. (Типичный способ сделать это - использовать подпрограмму import
из стандартного модуля Exporter). Но в данном случае автор модуля написал собственный метод import
, который принимает хэш-реф и делает с ним разные вещи.