Каково значение блока кода после “модуля использования”?

Что является значением и что является эффектом чего-то вроде этого (я думаю, что это объектно-ориентировано):

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',
               }, 
}

Что было бы Мой:: Путание:: пакет/модуль/класс Кода делает с материалом в фигурных скобках. Фигурные скобки включают блок кода или ссылку хеша?

6
задан paz9 21 July 2010 в 15:01
поделиться

1 ответ

Это хэш-ссылка.

Когда вы делаете use Module::Foo @stuff;, происходит следующее:

BEGIN { 
    require "Module/Foo.pm";
    Module::Foo->import( @stuff );
};

Обычно параметры, передаваемые в import, используются для запроса на экспорт символов в ваше пространство имен. (Типичный способ сделать это - использовать подпрограмму import из стандартного модуля Exporter). Но в данном случае автор модуля написал собственный метод import, который принимает хэш-реф и делает с ним разные вещи.

13
ответ дан 8 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: