2010-07-21 25 views
6

önemi nedir ve böyle bir şey (Ben nesne yönelimli olduğunu düşünüyorum) etkisi nedir: Bir "kullanım modülü" sonra bir kod bloğu anlamı nedir?

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 :: Kafa karıştırıcı :: Kod paket/modül/sınıf şeyleri ne yapacağını kıvırcık parantez içinde. Kıvrık parantezler bir kod bloğunu veya bir karma referansı mı kapsıyor?

+0

Bir; son} sonra, en azından dosyada başka bir kod varsa. – ysth

cevap

13

Bu karma referansı.

Eğer use Module::Foo @stuff; yapmak

ne arkası sahneleri oluyor geçerli:

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

Normalde import geçirilen parametreler sembolleri ad içine ihraç edilecek istemek için kullanılır. (Bunu yapmanın tipik yolu, standart Exporter modülünden import alt yordamını kullanmaktır.) Ancak, bu durumda, modül yazarı bir hashref alan ve onunla bir şeyler yapan bir özel import yöntemi yazmıştır.

+2

Bir 'import' yöntemini uygulamak için bir modülün birçok başka nedeni vardır. – mob

+0

Teşekkürler. Evet, bu durumda "içe aktarma" işlevi, onu kullanan modüller için kendi sembol tablosu kümelerindeki bir girişi başlatmak için kendisine gönderilen karma referansı kullanır. Bu kod, bir çeşit perl çerçevesini uygular. – paz9