Từ tất cả những gì tôi đã đọc về việc sử dụng các module Perl, việc sử dụng cơ bản là:Perl - Gói vấn đề/Module
- tập tin Module với
.pm
mở rộng, bao gồm báo cáo kết quảpackage <name>
, nơi<name>
là tên file của mà không có phần mở rộng. - Tệp mã sử dụng mô-đun có chứa câu lệnh
use <name>;
.
Ứng dụng tôi đang mã hóa có một tập lệnh mã chính sử dụng khoảng 5 mô-đun. Tôi đã quên bao gồm tuyên bố package <name>
trong các mô-đun, nhưng mã của tôi vẫn chạy tốt với tuyên bố use <name>
. Tôi bắt đầu nhận được lỗi Undefined subroutine
với một trong các mô-đun, vì vậy tôi đã thêm tuyên bố gói vào từng mô-đun. Bây giờ phần còn lại của các mô-đun đó ngừng hoạt động. Đưa cái gì?
Ví dụ:
mainapp.pl
#!/usr/bin/perl
use UtyDate;
my $rowDate = CurrentDate("YYYYMMDD");
UtyDate.pm
#!/usr/bin/perl
package UtyDate;
sub CurrentDate
{
#logic
}
return 1;
Khi tôi chạy mã trên, tôi nhận được lỗi Undefined subroutine &main::CurrentDate called at...
. Tuy nhiên, nếu tôi xóa dòng package UtyDate;
khỏi UtyDate.pm, tôi sẽ không gặp lỗi. Tình trạng này tồn tại đối với một số nhưng không phải tất cả các mô-đun của tôi.
Rõ ràng là có nhiều mã hơn tôi không hiển thị, nhưng tôi nhầm lẫn cách bất kỳ mã nào tôi không hiển thị có thể ảnh hưởng đến cấu trúc gói/sử dụng mà tôi đã hiển thị ở đây.
OP nên đọc ' perlmod' (http://search.cpan.org/perldoc/perlmod) trước tiên là điều kiện tiên quyết để hiểu những gì xảy ra trong 'Trình xuất'. – mob
Giải thích tuyệt vời, cảm ơn. Tôi đã thấy Nhà xuất khẩu được sử dụng trong một số ví dụ mà tôi đã thấy, nhưng không phải tất cả, vì vậy tôi nghĩ rằng nó không liên quan. Tôi sẽ xem xét tài liệu quá đông đảo, cảm ơn. – brydgesk