2010-07-21 17 views
6

ý nghĩa là gì và ảnh hưởng của một cái gì đó như thế này (tôi nghĩ rằng đó là hướng đối tượng) là gì:Ý nghĩa của khối mã sau "mô-đun sử dụng" là gì?

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

sẽ My :: Confusing :: Mã gói/module/lớp làm gì với những thứ trong dấu ngoặc nhọn. Các dấu ngoặc nhọn có bao quanh khối mã hoặc tham chiếu băm không?

+0

Sẽ có một; sau lần cuối cùng}, ít nhất là nếu có bất kỳ mã nào khác trong tệp. – ysth

Trả lời

13

Đó là tham chiếu băm.

Khi bạn làm use Module::Foo @stuff;, những gì đang xảy ra đằng sau hậu trường là:

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

Thông thường, các tham số truyền cho import được sử dụng để yêu cầu biểu tượng để được xuất khẩu vào không gian tên của bạn. (Cách điển hình để thực hiện việc này là sử dụng chương trình con import từ mô-đun chuẩn Exporter.) Nhưng trong trường hợp này, tác giả mô-đun đã viết phương thức tùy chỉnh import lấy hàm băm và thực hiện công cụ với nó.

+2

Có nhiều lý do khác cho một mô-đun để thực hiện phương thức 'import'. – mob

+0

Cảm ơn. Có, chức năng "nhập" trong trường hợp này sử dụng tham chiếu băm được truyền vào nó để khởi tạo một mục nhập trong bộ bảng biểu tượng riêng của nó cho các mô-đun sử dụng nó. Mã này thực hiện một khung công tác perl. – paz9