CGI :: Uygulamamdaki hangi modülün Moose yükleniyor olduğunu bulmaya çalışıyorum. "Gereksinimi" aşırı yüklemeyi denedim ama sözdizimi oldukça doğru görünmüyor. Birisi aşağıdaki kodu temizlemek olsaydı bunu takdir ediyorum:Hangi modüle Moose yüklediğini nasıl anlarım?
use strict;
use warnings;
use Carp qw//;
BEGIN {
*CORE::GLOBAL::require = sub (*) {
warn "Requiring $_[0] at: " . Carp::longmess();
CORE::require (@_);
};
}
Temelde, bu komut dosyası ile sorun aslında hiçbir şey yüklenmiyor olmasıdır. CORE :: require (@) çağrıldığında bir şey "yapmaz". Komut adını doğrudan $ [0] kullanarak geçirmeyi denedim, ancak bu yalnızca zaman aşımına uğrayana kadar komut dosyasının kilitlenmesine neden oldu.
NOT: Yukarıdaki senaryo kimin "almak için modülün başlangıcında birkaç satır ekleyerek, belirli bir modül yüklenirken öğrenebilirsiniz benim baştan ayağa komut
Mükemmel cevap! Bunu özellikle seviyorum çünkü Moose.pm dosyasını herhangi bir şekilde yamalamaktan kaçının. Bunun yerine, '@ INC' nin nadiren kullanılan, ama çok güzel bir özellikten faydalanırsınız. – daotoad
Bunu bir içe aktarma yönteminin içine 'wholoads.pm' içine koyar ve yöntemin ilk argümanını kontrol ederseniz, 'perl -Mwholoads = Moose yourscript.pl' olarak kullanabilirsiniz. Ayrıca, stacktraces almak için Carp :: cluck() kullanmayı düşünürdüm, çünkü bu aynı zamanda çalışma zamanında tembel yükleme modüllerini de kapsayacaktı. – phaylon
@phaylon: Harika bir fikir. Bütün bunları zaten CPAN'da yapan bir modül olsaydı şaşırmaz mıydım? Değilse yeni bir proje gibi geliyor! – draegtun