रास्ता AUTOLOAD
की तरह मांग पर सबरूटीन्स परिभाषित करने के लिए इस्तेमाल किया जा सकता है, मैं अगर वहाँ एक पैकेज के गुप्त कोष में टाई ताकि मैं उस पैकेज में चर के लिए उपयोग को रोक सकता एक तरीका है सोच रहा हूँ।पर्ल में, क्या स्टैस बांधने का कोई तरीका है?
मैं निम्नलिखित विचार के विभिन्न क्रमपरिवर्तन की कोशिश की है, लेकिन कोई भी काम करने के लिए लग रहे हैं: Bad symbol for scalar ...
अंतिम पंक्ति पर साथ
{package Tie::Stash;
use Tie::Hash;
BEGIN {our @ISA = 'Tie::StdHash'}
sub FETCH {
print "calling fetch\n";
}
}
{package Target}
BEGIN {tie %Target::, 'Tie::Stash'}
say $Target::x;
यह मर जाता है, कभी मुद्रण "calling fetch"
बिना। यदि say $Target::x;
लाइन हटा दी गई है, तो प्रोग्राम चलाता है और ठीक से बाहर निकलता है।
मेरा अनुमान है विफलता stashes तरह किया जा रहा से कोई लेना देना नहीं है कि है, लेकिन हैश के रूप में ही नहीं है, तो मानक टाई तंत्र सही काम नहीं कर रहा है (या यह हो सकता है कि गुप्त कोष में देखने जादू टाई का आह्वान कभी नहीं)।
क्या किसी को पता है कि यह संभव है? शुद्ध पर्ल सबसे अच्छा होगा, लेकिन एक्सएस समाधान ठीक है।
यह काम करता है अगर आप 'टाई ले ...' 'BEGIN' ब्लॉक से बाहर कहते हैं? – mob
यदि आप बाद में टाई करते हैं, तो पर्ल पहले से ही चला गया है और उस ग्लोब की तलाश में चला गया है जिसमें $ Target :: x है, इसलिए कुछ भी नहीं होता है। क्यों देखने के लिए perl -M0 = Terse foo.pl चलाने का प्रयास करें। – Alex