मैं पर्ल डिबगर अंदर 'आधुनिक पर्ल' कोड का मूल्यांकन करने में असमर्थ हूँ। फ़ाइल में कोड डीबग करते समय यह ठीक काम करता है, लेकिन प्रॉम्प्ट से नहीं।डीबगर के अंदर perl 5.10 सुविधाओं का उपयोग कैसे करें?
न्यूनतम उदाहरण:
# activating 5-10 features with -E (it works)
$ perl -E 'say "x"'
x
# calling the debugger with -E # it works for infile code but for prompt line code... $ perl -dEbug Loading DB routines from perl5db.pl version 1.33 DB say "x" String found where operator expected at (eval 16)[/local-perl/lib/5.12.1/perl5db.pl:638] line 2, near "say "x"" at (eval 16)[/local-perl/lib/5.12.1/perl5db.pl:638] line 2 eval '([email protected], $!, $^E, $,, $/, $\\, $^W) = @saved;package main; $^D = $^D | $DB::db_stop;say "x";
[ध्यान दें: एक ही साथ " ': 5.10' उपयोग सुविधा" होता है]
मैं कुछ याद आ रही है?
hummm, आपके उत्तर के लिए धन्यवाद, यह बताता है कि क्यों ऐसा होता है। लेकिन अब मैं और अधिक परेशान हूं: मैंने इन सुविधाओं को 'उपयोग सुविधा' के साथ डीबगर में लोड करने से पहले कोशिश की है '' और यह काम नहीं किया। अब मैंने चाल देखी: यह एक ही पंक्ति में होना चाहिए। क्यूं कर??? क्यों 'फीचर' मॉड्यूल मौजूदा दायरे (डीबी लाइन) के लिए स्थानीय कार्यों को निर्यात करता है ?? इसका उपयोग कैसे करें? हालांकि मैं हमेशा वैश्विक था। यदि आप कुछ स्थानीयकरण चाहते थे तो आप 'आवश्यकता' का उपयोग नहीं करते हैं? मैं इस मुद्दे पर किसी भी ज्ञान की सराहना करेंगे। –
मैंने सोचा कि असामान्य भी था। ईमानदार होने के लिए, मुझे "क्यों" भाग पर वास्तव में यकीन नहीं है, लेकिन ऐसा लगता है कि आप बिल्कुल सही हैं - 'उपयोग सुविधा x' कथन कार्य करते हैं जैसे कि वे डीबी लाइन पर जा सकते हैं। मेरा अनुमान है कि प्रत्येक पंक्ति को एक अलग ब्लॉक/स्कोप के रूप में निष्पादित किया जाता है, क्योंकि 'my $ x = 1' जैसे चर को घोषित करने से बाद की रेखाओं पर 'x x' अनुपलब्ध हो जाएगा (क्योंकि यह अगले के दायरे में नहीं है रेखा, केवल वर्तमान लाइन)। यह सुसंगत रहेगा, क्योंकि प्रागमा (जैसे 'फीचर') को ब्लॉक के अंत में लेक्सिक रूप से स्कॉप्ड किया जाता है जिसमें आप उनका उपयोग करते हैं। – eldarerathis
धन्यवाद, मुझे 'फीचर' लेक्सिकल स्कोप याद आया। यह 'केवल लाइन कार्रवाई में' बताता है। लेकिन क्या आपको पता है कि क्यों मेरा मॉड्यूल या स्क्रिप्ट 'उपयोग सुविधा' से शुरू होता है, तो यह काम नहीं करता है?क्या इसका मतलब यह है कि यह सभी 'उपयोग सुविधा ...' के साथ होगा। और आखिरकार, यदि आप पर्ल> 5.10 फीचर्स का उपयोग कर रहे हैं, तो स्क्रिप्ट में, लाइन में त्रुटि होने पर आप उन्हें कैसे डिबग करते हैं और आप डीबगर में इसके साथ खेलना चाहते हैं? क्या आप इसके साथ खेलने के लिए डेवेल :: आरईपीएल का उपयोग करेंगे? –