modules metacpan mcpan manager library perl module

perl - metacpan - ¿Cuál es el significado de un bloque de código después de un "módulo de uso"?



perl package manager (1)

Cuál es el significado y cuál es el efecto de algo como esto (creo que está orientado a objetos):

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

¿Qué haría el paquete / módulo / clase My :: Confusing :: Code con las cosas en las llaves? ¿Las llaves incluyen un bloque de código o una referencia hash?


Es una referencia hash.

Cuando usas use Module::Foo @stuff; , lo que sucede detrás de escena es:

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

Normalmente, los parámetros pasados ​​a import se utilizan para solicitar la exportación de símbolos a su espacio de nombres. (La forma típica de hacerlo es usar la subrutina de import del módulo Exportador estándar). Pero en este caso, el autor del módulo ha escrito un método de import personalizado que toma un hashref y hace cosas con él.