perl - पर्ल में चेतावनी के बजाय मुझे कार्प का उपयोग क्यों करना चाहिए?




module carp (3)

लोग मुझे चेतावनी के बजाए कार्प के साथ उदाहरण देते रहते हैं। क्यूं कर? चेतावनी से कार्प बेहतर क्या बनाता है?


कार्प आपको अधिक जानकारी देता है कि संदेश कहां से आता है (संदर्भ)

#!/usr/bin/perl

use Carp;

foo();
bar();
baz();

sub foo {
  warn "foo";
}

sub bar {
  carp "bar";
}

sub baz {
  foo();
  bar(); 
}

पैदा करता है

foo at ./foo.pl line 9.
bar at ./foo.pl line 13
        main::bar() called at ./foo.pl line 6
foo at ./foo.pl line 10.
bar at ./foo.pl line 14
        main::bar() called at ./foo.pl line 19
        main::baz() called at ./foo.pl line 7

थोड़े से इस छोटे से कार्यक्रम के लिए मूर्खतापूर्ण है लेकिन जब आप जानना चाहते हैं कि कार्पिंग की विधि किसने बुलाया है तो काम में आता है।


कार्प मॉड्यूल के भीतर डीबगिंग के लिए बेहतर काम करता है। यदि आप केवल एक साधारण लिपि लिख रहे हैं, तो कोई फायदा नहीं है। कार्प डॉक्यूमेनेशन से :

कार्प रूटीन आपके मॉड्यूल में उपयोगी होते हैं क्योंकि वे मर () या चेतावनी () की तरह कार्य करते हैं, लेकिन एक संदेश के साथ जो आपके मॉड्यूल के उपयोगकर्ता के लिए उपयोगी होने की संभावना है। क्लक, कबूल, और दीर्घायु के मामले में संदर्भ कॉल-स्टैक में प्रत्येक कॉल का सारांश है। एक छोटे से संदेश के लिए आप कार्प या क्रोक का उपयोग कर सकते हैं जो त्रुटि को रिपोर्ट करता है जहां से आपका मॉड्यूल कहलाता था। इस बात की कोई गारंटी नहीं है कि वह जगह है जहां त्रुटि थी, लेकिन यह एक अच्छा शिक्षित अनुमान है।


Carp कॉलर के परिप्रेक्ष्य से त्रुटियों की रिपोर्ट करता है। यह उन मॉड्यूल के लिए उपयोगी है जहां आप आम तौर पर गलत उपयोग (जैसे एक लापता तर्क) के बारे में चेतावनी देना चाहते हैं और उस स्थान की पहचान करें जहां त्रुटि का पता चला था जहां यह पता चला था यह उपयोगिता कार्यों के लिए विशेष रूप से महत्वपूर्ण है जिसका उपयोग कई स्थानों पर किया जा सकता है।

अधिकांश लेखक मॉड्यूल में स्क्रिप्ट और carp में warn का उपयोग करते हैं। कभी-कभी मैं मॉड्यूल के अंदर warn उपयोग करता हूं, जब मैं चाहता हूं कि त्रुटि संदेश मॉड्यूल के कार्यान्वयन में किसी समस्या को प्रतिबिंबित करे (उदाहरण के लिए एक मामला जिसे इसे समर्थन देना चाहिए लेकिन नहीं।) यह तर्कसंगत है कि ऐसी परिस्थितियों में cluck बेहतर होगा क्योंकि यह एक पूर्ण प्रदान करता है स्टैक बैकट्रैक।





carp