Tôi gặp sự cố perl: nhập biểu tượng, tùy thuộc vào các phần tử đường dẫn trong @INC
và câu lệnh use
.perl: Trình xuất không hoạt động với các phần tử đường dẫn trong câu lệnh `use`
Nếu tôi đặt đường dẫn đầy đủ vào @INC
, quá trình nhập sẽ hoạt động. Nếu một phần của con đường là trong báo cáo use
module để nhập khẩu được thực thi, nhưng việc nhập khẩu phải được thực hiện một cách rõ ràng:
########################################
# @INC has: "D:/plu/lib/"
#------------------------------------------------
# Exporting file is here: "D:/plu/lib/impex/ex.pm"
#
use strict;
use warnings;
package ex;
use Exporter;
our @ISA = 'Exporter';
our @EXPORT = qw(fnQuark);
sub fnQuark { print "functional quark\n"; }
print "Executing module 'ex'\n";
1;
#------------------------------------------------
# Importing file, example 1, is here: "D:/plu/lib/impex/imp.pl"
#
use strict;
use warnings;
package imp;
use impex::ex;
ex->import(@ex::EXPORT); # removing this line makes fnQuark unavailable!
# Why is this necessary, 'ex.pm' being an Exporter?
fnQuark();
#------------------------------------------------
# Importing file, example 2, is here: "D:/plu/lib/impex/imp2.pl"
#
use strict;
use warnings;
package imp2;
use lib 'D:/plu/lib/impex';
use ex;
fnQuark(); # works without explicit import
#-------------------------------------------------
sai lầm của tôi là gì?
Cảm ơn bạn đã trả lời nhanh. Nhưng tôi không hiểu tại sao tôi không có vấn đề này trước đây. Tôi có rất nhiều mô-đun, e. g. 'FotoArchive.pm' trong lib/Foto, với tên gói FotoArchive và Foto không nằm trong đường dẫn @INC. Tại sao điều đó không gây ra vấn đề tương tự khi tôi gọi chúng thông qua Foto :: FotoArchive? - Ah, tôi bắt đầu thấy, bởi vì họ không xuất khẩu bất cứ thứ gì. Vì vậy, tôi đã đi với sai lầm của tôi không được chú ý quá lâu! Cảm ơn bạn! – Sadko