2008-12-10 6 views
27

क्या पर्ल में वर्तमान स्रोत लाइन संख्या प्राप्त करना संभव है? सी ++ में समतुल्य __LINE__ है।मैं पर्ल में स्रोत लाइन नंबर कैसे प्रिंट कर सकता हूं?

+0

मैं सोच रहा हूं हालांकि: आपको इसकी आवश्यकता क्यों होगी? –

+3

मैंने इसे बहुत लंबी प्रक्रिया के माध्यम से प्रगति को त्वरित रूप से ट्रैक करने के लिए उपयोग किया है, और ऑर्डर चीजों को जांचने के लिए, ब्रेकपॉइंट्स की तरह, लेकिन डीबगर –

+0

@LeonTimmermans का उपयोग किए बिना: मैं आपकी पुरानी टिप्पणी का जवाब दे रहा हूं कि एक पर्ल क्यों प्रोग्रामर _ _FILE_ _ और _ _ LINE _ _ चाहता है। असल में, एक ही कारण है कि एक सी/सी ++ प्रोग्रामर उन्हें क्यों चाह सकता है। जैसे आज मैंने एक परीक्षण दोहराया ताकि टेस्ट :: मतभेद :: eq_or_diff को सबराउटिन में बुलाया गया था। रिपोर्ट की गई पंक्ति संख्या subroutine में थी जहां subroutine से बुलाया गया था। परीक्षण नाम में __ LINE __ जोड़ना मुझे असफल परीक्षण खोजने में मदद करता है। अब अगर मैं सिर्फ पर्ल 5 में एक मैक्रो CODE_LOCATION लिख सकता हूं। –

उत्तर

51
print "File: ", __FILE__, " Line: ", __LINE__, "\n"; 

या

warn("foo"); 
+4

चेतावनी एसटीडीईआरआर पर प्रिंट होगी। – mat

6

नोट वहाँ

पर्ल -e'warn ("foo") '-e लाइन 1.

पर

foo के साथ एक पकड़ लिया है अगर यह एक नई पंक्ति के साथ समाप्त होता यह नहीं होगा प्रिंट लाइन नंबर

पर्ल -e'warn ("foo \ n") '

foo

यह भी में प्रलेखित है "perldoc -f मर", लेकिन शायद "perldoc -f चेतावनी दी है" मरने के लिए खंड के संदर्भ में याद करने के लिए आसान है ...

1

इस लाइन तुम कहाँ बाहर प्रिंट, और "ढेर"

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; } 
1

"कार्प का उपयोग करें" और विभिन्न दिनचर्या के साथ खेलते हैं और आप भी एक मिल (बुला कार्यक्रमों से लाइनों की सूची (लिपियों/मॉड्यूल/आदि) जगह आप अब कर रहे हैं करने के लिए नेतृत्व कि) ढेर - सुनिश्चित नहीं है कि यह तरीका सीएनडी द्वारा सुझाए गए "कॉलर" विधि से बेहतर या बदतर है। मैंने सी और पर्ल में लाइन और फ़ाइल वैरिएबल (और संभवतः अन्य समान चर) का उपयोग किया है ताकि यह दिखाया जा सके कि कोड में और मुझे डिबगिंग के दौरान अन्य जानकारी मिली है लेकिन डीबग वातावरण के बाहर थोड़ा मूल्य देखा है।

संबंधित मुद्दे

 संबंधित मुद्दे