मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे सीजीआई में कौन सा मॉड्यूल :: एप्लिकेशन मूस लोड कर रहा है। मैंने "आवश्यकता" अधिभारित करने का प्रयास किया लेकिन मुझे लगता है कि सिंटैक्स बिल्कुल सही नहीं है। यदि कोई व्यक्ति निम्न कोड को साफ कर सकता है मैं इसे सराहना करते हैं:मैं कैसे पता लगा सकता हूं कि मॉड्यूल मूस लोड कर रहा है?
use strict;
use warnings;
use Carp qw//;
BEGIN {
*CORE::GLOBAL::require = sub (*) {
warn "Requiring $_[0] at: " . Carp::longmess();
CORE::require (@_);
};
}
असल में, इस स्क्रिप्ट के साथ समस्या यह है कि यह वास्तव में कुछ भी लोड नहीं किया जाता है। जब कोर :: की आवश्यकता होती है (@) कहा जाता है वह कुछ भी नहीं करता है। मैंने इसे सीधे $ [0] का उपयोग करके स्क्रिप्ट नाम को पारित करने का प्रयास किया, लेकिन इसके परिणामस्वरूप स्क्रिप्ट डेडलॉकिंग का समय समाप्त हो गया।
नोट: ऊपर स्क्रिप्ट आप पता लगा सकते हैं, जो एक विशेष मॉड्यूल लोड कर रहा है मॉड्यूल के शुरू में कुछ लाइनें डालने प्राप्त करने के लिए "के आधार पर अपने शुरू अप स्क्रिप्ट
बहुत बढ़िया जवाब! मुझे यह विशेष रूप से पसंद है क्योंकि आप किसी भी तरह से Moose.pm को पैच करने से बचते हैं। इसके बजाय आप '@ INC' की शायद ही कभी उपयोग की जाने वाली, लेकिन बहुत अच्छी सुविधा का लाभ उठाते हैं। – daotoad
यदि आप इसे एक आयात विधि के अंदर 'wholoads.pm' में डालते हैं और विधि के पहले तर्क के खिलाफ जांच करते हैं तो आप इसे 'perl -Mwholoads = Moose yourscript.pl' के रूप में उपयोग कर सकते हैं। मैं स्टैपट्रैस पर जाने के लिए कार्प :: क्लक() का उपयोग करने पर भी विचार करता हूं, क्योंकि यह रनटाइम पर आलसी लोडिंग मॉड्यूल भी शामिल करेगा। – phaylon
@ फीयलॉन: महान विचार। हालांकि अगर कोई ऐसा मॉड्यूल था जो सीपीएएन पर पहले से ही किया गया तो मुझे आश्चर्य नहीं होगा? यदि यह एक नई परियोजना की तरह नहीं लगता है! – draegtun