आप एक अच्छा जवाब पहले से ही है, लेकिन शायद इस रूप में अच्छी तरह उपयोगी होगा।
our
घोषणा my
और use vars
के पहलुओं को जोड़ती है। यह use vars
के समान काम करता है जिसमें यह पैकेज चर घोषित करता है; हालांकि, इस तरह से घोषित चर को स्पष्ट रूप से स्कॉप्ड किया गया है और उस दायरे से बाहर नहीं पहुंचा जा सकता है जिसमें उन्हें घोषित किया गया था (जब तक आप चर के पूर्ण योग्य नाम का उपयोग नहीं करते)। इसके अलावा, एक चर our
साथ घोषित भी पैकेज सीमाओं भर में अपनी पूरी शाब्दिक गुंजाइश, पर दृश्यमान है।
यहाँ एक मेज है कि मैं अपने पर्ल को जोड़ा गया एक समय पहले नोटों है। उदाहरण के लिए, this SO answer देखें।
Scope/ Package
Namespace Variable Private New
---------------------------------------------------
my Lexical No Yes Yes
our Lexical Yes No No
use vars Package Yes No No
धन्यवाद, अब मैं समझता हूं। –
यह वास्तव में एक उपनाम है, अगर यह केवल 'सख्त' के लिए छूट है तो हमारे $ foo = 42 'perl -le'; पैकेज ए; प्रिंट करें "$ foo $ main :: foo" ' 42 42' वही चीज़ प्रिंट करेगा जैसे 'perl -le' vars qw/$ foo /; $ foo = 42; पैकेज ए; प्रिंट करें "$ foo $ main :: foo" '', जो एक छूट है, और हमें 'हमारी' आवश्यकता नहीं होगी। –
@ चास अच्छा बिंदु। – hobbs