मैंने हाल ही में एक स्क्रिप्ट को डिबग करने में काफी समय बिताया, और जब मुझे अंततः समस्या मिली तो यह कोड की वजह से था जो इस तरह दिखता था:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
यह पता चला कि समस्या उस के साथ थी $!.bar, जो $!barया तो होनी चाहिए थी या $.bar। मैंने इसे प्राप्त किया।
लेकिन यह क्यों नहीं मरता ?
इसे और अधिक विस्तार से देखने पर ऐसा लगता है कि यहाँ समस्या यह है कि मैं एक (गैर-मौजूद) पद्धति barपर कॉल करने का प्रयास कर रहा हूँ $!, जो इस बिंदु पर है Nilक्योंकि इसमें कोई त्रुटि नहीं है।
और ऐसा लगता है कि मैं वास्तव में किसी भी विधि को मैं चाहता हूं पर कॉल कर सकता हूं Nilऔर वे सभी चुपचाप वापस आ जाते हैं Nil, जिसमें सामान जैसे Nil.this-is-a-fake-methodऔर Nil.reverse-entropy(123)।
क्या यह एक विशेषता है? यदि हां, तो तर्क क्या है?