2009-06-21 18 views
6

मैं कैसे जांच सकता हूं कि एक चर के पास पर्ल में एक विशिष्ट मान है? क्या इसके कुछ चरों को देखने के लिए स्क्रिप्ट के निष्पादन को रोकने के लिए कोई आदेश है?पर्ल में मेरे पास परिवर्तनीय दावे कैसे हो सकते हैं?

मुझे आश्चर्य है कि अगर मैं डालने के pythonic अभ्यास का उपयोग कर सकते हैं: एक debuger कम रास्ते में

assert 0, (foo, bar) 

डिबग लिपियों के लिए?

उत्तर

2

PerlMonks पर एक स्क्रिप्ट है जो एक तेज जोर विधि पेश करती है।

गति महत्वपूर्ण है क्योंकि पर्ल व्याख्या की है और किसी भी इनलाइन चेकों (उदाहरण के लिए सरल सी मैक्रो के विपरीत) प्रदर्शन को प्रभावित करेगा


मैं अगर इन बातों को सीधे प्रयोग करने योग्य होने जा रहे हैं यकीन नहीं है।

  • डिफ़ॉल्ट इंस्टॉल में Test::Harness है। यहां is a starter tutorial। और हाल ही में मॉड्यूल TAP::Harness
  • लाइनों आप बात करते हैं के साथ एक धीमी संस्करण Sub::Assert

ठीक है! यही वह है जिसे मैं ढूंढ रहा था - PDF Warning: Test-Tutorial.pdfTest::Harness पर्ल मॉड्यूल परीक्षण लिखने के लिए प्रयोग किया जाता है।

10

एक त्वरित सीपीएएन खोज Carp::Assert सुझाती है।

+1

+1 मेरे द्वारा किए गए अधिक वर्णों में तेज़ी से टाइप करने के लिए। मैं यूआरएल को संस्करण अज्ञेयवादी होने के लिए संपादित करने जा रहा हूं। –

+0

मैं फोटो खत्म करने के बारे में आपके उत्तर पर टिप्पणी करने जा रहा था। यूआरएल के लिए, मैं लगातार भूल जाता हूं, इसलिए धन्यवाद। – Telemachus

5

Smart::Comments अच्छा है।

+0

स्मार्ट :: टिप्पणियां ++ जब -एनवी स्विच के साथ उपयोग किया जाता है, तो यह इस तरह की चीज़ के लिए एक शानदार टूल है। उत्पादन में जाने से पहले सभी परीक्षणों को तोड़ने से कहीं ज्यादा बेहतर, जैसा कि किसी और ने सुझाव दिया था। – RET

1
$var_to_check =~ /sometest/ or die "bad variable!"; 

मैं अपने कोड में इस तरह बातें फेंक, और बाद में एक खोज का उपयोग करें और उनमें से छुटकारा पाने के लिए (उत्पादन कोड में) की जगह होते हैं।

इसके अलावा, 'eval' का उपयोग कोड के एक भाग को चलाने और त्रुटियों को कैप्चर करने के लिए किया जा सकता है और अपवाद हैंडलिंग कार्यक्षमता बनाने के लिए उपयोग किया जा सकता है। यदि आप जोर दे रहे हैं कि कोई मान 0 नहीं है, तो शायद आप एक अपवाद फेंकना चाहते हैं और उस मामले को विशेष तरीके से संभालना चाहते हैं?

0
if ($next_sunrise_time > 24*60*60) { warn("assertion failed"); } # Assert that the sun must rise in the next 24 hours. 

आप पर्ल 5.9 जो Carp::Assert के लिए आवश्यक है के लिए उपयोग नहीं है, तो ऐसा कर सकते हैं।

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

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