मैं पर्ल को "हेड-फर्स्ट" तरीके से सीख रहा हूं। मैं इस भाषा में बिल्कुल नौसिखिया हूं:मैं अपने पर्ल प्रोग्राम के लिए कमांड लाइन स्विच के माध्यम से एक डिबगिंग मोड कैसे सक्षम कर सकता हूं?
मैं सीएलआई से डीबग_मोड स्विच करने की कोशिश कर रहा हूं जिसका उपयोग कुछ स्प्रॉउटिन को "चालू और बंद" स्विच करके नियंत्रित करने के लिए किया जा सकता है।
और नीचे क्या मैं अब तक मिल गया है है: तो जहाँ तक मैं बता सकता हूँ
#!/usr/bin/perl -s -w
# purpose : make subroutine execution optional,
# which is depending on a CLI switch flag
use strict;
use warnings;
use constant DEBUG_VERBOSE => "v";
use constant DEBUG_SUPPRESS_ERROR_MSGS => "s";
use constant DEBUG_IGNORE_VALIDATION => "i";
use constant DEBUG_SETPPING_COMPUTATION => "c";
our ($debug_mode);
mainMethod();
sub mainMethod #()
{
if(!$debug_mode)
{
print "debug_mode is OFF\n";
}
elsif($debug_mode)
{
print "debug_mode is ON\n";
}
else
{
print "OMG!\n";
exit -1;
}
checkArgv();
printErrorMsg("Error_Code_123", "Parsing Error at...");
verbose();
}
sub checkArgv #()
{
print ("Number of ARGV : ".(1 + $#ARGV)."\n");
}
sub printErrorMsg # ($error_code, $error_msg, ..)
{
if(defined($debug_mode) && !($debug_mode =~ DEBUG_SUPPRESS_ERROR_MSGS))
{
print "You can only see me if -debug_mode is NOT set".
" to DEBUG_SUPPRESS_ERROR_MSGS\n";
die("terminated prematurely...\n") and exit -1;
}
}
sub verbose #()
{
if(defined($debug_mode) && ($debug_mode =~ DEBUG_VERBOSE))
{
print "Blah blah blah...\n";
}
}
, कम से कम यह काम करता है ...:
- -debug_mode स्विच नहीं करता है 'टी सामान्य ARGV
- निम्नलिखित commandlines काम के साथ हस्तक्षेप:
- ./option al.pl
- ./optional.pl -debug_mode
- ./optional.pl -debug_mode = वी
- ./optional.pl -debug_mode = रों
हालांकि, मैं बजे, हैरान जैसे जब कई debug_modes "मिश्रित" कर रहे हैं:
- ./optional.pl -debug_mode = sv
- ./optional.pl -debug_mode = बनाम
मुझे समझ में नहीं आता कि कोड की उपरोक्त पंक्तियां "जादुई रूप से काम करती हैं" क्यों।
मुझे लगता है कि "DEBUG_VERBOS" और "DEBUG_SUPPRESS_ERROR_MSGS" दोनों स्क्रिप्ट पर लागू होते हैं, जो इस मामले में ठीक है।
हालांकि, अगर कुछ "विरोधाभासी" डीबग मोड हैं, तो मुझे यकीन नहीं है कि "डीबग_मोड्स की प्राथमिकता" को कैसे सेट किया जाए?
इसके अलावा, मुझे यकीन नहीं है कि मेरा दृष्टिकोण पर्लिस्टों के लिए पर्याप्त है और मुझे उम्मीद है कि मैं अपने पैरों को सही दिशा में प्राप्त कर रहा हूं।
एक सबसे बड़ी समस्या यह है कि अब मैं अलग-अलग तरीकों के तहत अपने व्यवहार को नियंत्रित करने के लिए के अधिकांश वक्तव्य डालता हूं। यह ठीक है? क्या कोई और शानदार तरीका है?
मुझे पता है कि सीपीएएन या अन्य जगहों से डीबग मॉड्यूल होना चाहिए, लेकिन मुझे एक वास्तविक न्यूनतम समाधान चाहिए जो "डिफ़ॉल्ट" से किसी अन्य मॉड्यूल पर निर्भर न हो।
और मैं वातावरण जहां इस स्क्रिप्ट निष्पादित किया जाएगा पर कोई नियंत्रण नहीं कर सकते हैं ...
पर्ल गुरु आपको भाषा को 'पर्ल' के रूप में संदर्भित करना पसंद करेंगे, न कि 'PERL' – Zaid
बहुत अधिक सुरुचिपूर्ण तरीके हैं, लेकिन चूंकि आप बस पर्ल सीखना शुरू कर रहे हैं, इसे सभी को समझाने में काफी समय लगेगा। बस मेरी सभी किताबें पढ़ें। वास्तव में। _Learning Perl_ आपको मूल बातें सिखाता है, _Intermediate Perl_ आपको संदर्भ और ऑब्जेक्ट सामग्री देता है, और फिर आप _Mastering Perl_ के लिए तैयार हैं जो दिखाता है कि आप करना चाहते हैं। कॉन्फ़िगरेशन और लॉगिंग के लिए समर्पित अध्याय हैं। –
बूल के पास तीसरा मान नहीं हो सकता है, इसलिए उस सशर्त जांच '$ debug_mode' पर एक और डालना बल्कि बेकार है। – Ether