मुझे कुछ पर्ल कोड विरासत में मिला है जो निश्चित रूप से सख्त या चेतावनियों का उपयोग नहीं करता है, और मैं अनियमित चर और इसी तरह का उपयोग करता रहता हूं।ब्रैकेट कोड अनुभाग का उपयोग सख्त/कोई सख्त नहीं है?
मैं कोड के वर्गों है कि मैं इस तरह संशोधित कर रहा हूँ ब्रैकेट करना चाहते हैं:
use warnings;
use strict;
... my code changes and additions ...
no strict;
no warnings;
और वह काम करने के लिए लगता है, लेकिन मैं गूढ़ रहस्य क्या the perldoc on use का मतलब है जब यह कहते हैं ये हैं होने मुद्दों कर रहा हूँ कंपाइलर निर्देश जो वर्तमान "ब्लॉक स्कोप" में आयात करते हैं। क्या इसका मतलब यह है कि किसी भी स्कोप में use strict
no strict
के साथ unpaired हो सकता है? no strict
वैश्विक दायरे की पूंछ पर use strict
के अर्थ को पहले से ही उसी दायरे में पूर्ववत कर रहा है?
मैं पुष्टि करूंगा कि यह अस्थायी रूप से * मौजूदा कोड के साथ काम करना एक अच्छा विचार है। इससे भी बेहतर होगा कि आपके अतिरिक्त कार्यों को एक अलग लाइब्रेरी फ़ाइल में फंक्शंस में डालें। आप अंततः इसे सख्त के तहत लाएंगे। – Schwern
कोई भी जो 'सख्त' का उपयोग नहीं करता है, वह भी आसान कोड encapsulation की अनुमति नहीं देता है ... मुझे अपने ग्यारहवें वैश्विक हैशटेबल्स में जोड़ना है, आप देखते हैं ... – stevesliva
हाँ, यह निराशाजनक है, लेकिन यह रोका नहीं है आप पुस्तकालय subroutines का उपयोग करने से। आप उनके ग्लोबल्स को '% main :: blah' के साथ संदर्भित कर सकते हैं (माना जाता है कि यह पैकेज मुख्य में है)। इससे भी बेहतर, संदर्भ के अनुसार अपने subroutines में संशोधित करने के लिए अपने ग्लोबल को पारित करने की आवश्यकता है: 'some_new_sub (\% blah) '। यह अपने वैश्विक गड़बड़ी को नए कोड को संक्रमित करने से रोक देगा। यह पहली बार गन्दा होगा, लेकिन यह आपको एक बेहतर विचार देगा कि किस कोड को डेटा चाहिए। इन सबके माध्यम से, एक्स्ट्रेक्ट विधि पैटर्न आपका सबसे मजबूत टूल होगा। – Schwern