यह goto पेज
goto &NAME
रूप में कहते हैं goto
के अन्य रूपों से काफी अलग है। वास्तव में, यह सामान्य अर्थ में गोटो नहीं है, और में अन्य गेटोस से जुड़ी कलंक नहीं है।
तो यह वर्तमान सबरूटीन (कोई भी परिवर्तन local()
द्वारा निर्धारित खोने) बाहर निकल जाता है और तुरंत नामित सबरूटीन वर्तमान मूल्य का उपयोग कर उसके स्थान पर कहता है,
इसके बजाय अपने प्रश्न का उत्तर इस प्रकार है @_
का।
सामान्य फ़ंक्शन कॉल के साथ फ़ंक्शन से बाहर निकलने के बाद अगली पंक्ति पर निष्पादन जारी रहता है।
कि पैरा के बाकी अच्छी तरह से लायक के साथ-साथ पढ़ने है, और उत्तर देता है आपके दूसरे प्रश्न
यह AUTOLOAD
सबरूटीन्स एक और सबरूटीन लोड और फिर नाटक है कि अन्य सबरूटीन में बुलाया गया था करना चाहते हैं कि द्वारा किया जाता है पहली जगह (सिवाय इसके कि वर्तमान सबराउटिन में @_
में कोई भी संशोधन अन्य सबराउटिन के लिए प्रचारित किया जाता है।) goto
के बाद, caller
भी यह नहीं बता पाएगा कि इस दिनचर्या को पहले कहा जाता था।
एक बुनियादी उदाहरण।एक सबरूटीन deeper
कहीं परिभाषित के साथ तुलना
sub func_top {
deeper(@_); # pass its own arguments
# The rest of the code here runs after deeper() returns
}
sub func_top {
goto &deeper; # @_ is passed to it, as it is at this point
# Control never returns here
}
साथ बयान goto &deeper
उप func_top
से बाहर निकल गया है पर। तो deeper
पूरा होने के बाद, नियंत्रण func_top
कॉल के बाद वापस आता है। एक अर्थ में, func_top
को deeper
द्वारा प्रतिस्थापित किया गया है।
goto &func
के साथ तर्क पारित करने का प्रयास त्रुटियों में परिणाम, यहां तक कि केवल goto &deeper()
के लिए।
क्या आप इसके लिए एक उदाहरण कोड दे सकते हैं? – Ganapathy
@ गानापति मैंने एक मूल उदाहरण जोड़ा - क्या इससे मदद मिलती है? – zdim
आपके उदाहरण के लिए धन्यवाद, मैं आपके उदाहरण से आसानी से समझ गया – Ganapathy