Bir perl sorunum var: @INC
ve use
deyimindeki yol öğelerine bağlı olarak sembolleri içe aktarma.perl: İhracatçı, "use" ifadesindeki yol öğeleriyle çalışmaz
Tüm yolu @INC
içine koyarsam, içe aktarma çalışır. yolunun bir parçası use
açıklamada ise ithalat modül yürütüldüğünde, ancak ithalat açıkça yapılmalıdır:
########################################
# @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
#-------------------------------------------------
benim hatam nedir?
Hızlı yanıt için teşekkür ederiz. Ama daha önce neden bu problemi anlamadığımı anlamıyorum. Çok fazla modül var, e. g. Lib/Foto'da FotoArchive.pm ', FotoArchive ve Foto ismi ile @INC yolunda değil. Neden Foto :: FotoArchive aracılığıyla onları çağırdığımda neden aynı sorunlara neden olmaz? - Ah, görmeye başladım, çünkü hiçbir şey ihraç etmiyorlar. Bu yüzden çok uzun zamandır fark edilmediğim hatamdan kurtuldum! Teşekkür ederim! – Sadko