“使用模块”后代码块的含义是什么?

时间:2010-07-21 15:01:48

标签: perl module

具有什么意义以及这样的影响是什么(我认为它是面向对象的):

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

My :: Confusing :: Code包/模块/类会对花括号中的内容做什么。花括号是否包含代码块或哈希引用?

1 个答案:

答案 0 :(得分:13)

这是一个哈希引用。

当你use Module::Foo @stuff;时,幕后发生的事情是:

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

通常,传递给import的参数用于请求将符号导出到命名空间中。 (执行此操作的典型方法是使用标准Exporter模块中的import子例程。)但在这种情况下,模块作者编写了一个自定义import方法,该方法采用hashref用它做点什么。