कई साल पहले मैं एक साथी प्रोग्रामर इस परामर्श याद रखें:पर्ल में नए कुछ :: कक्षा और कुछ :: कक्षा-> नया() के बीच क्या अंतर है?
new Some::Class; # bad! (but why?)
Some::Class->new(); # good!
दुर्भाग्य से अब मैं/उसके कारण है कि याद नहीं कर सकते। :(दोनों फॉर्म सही ढंग से काम करेंगे, भले ही कन्स्ट्रक्टर वास्तव में कुछ :: कक्षा मॉड्यूल में मौजूद न हो, लेकिन इसके बजाय माता-पिता से कहीं भी विरासत में मिला है।
इनमें से कोई भी रूप कुछ :: क्लास :: नया जैसा नहीं है(), जो वर्ग के नाम को कन्स्ट्रक्टर के पहले पैरामीटर के रूप में पास नहीं करेगा - इसलिए यह फॉर्म हमेशा गलत है।
भले ही दोनों रूप बराबर हैं, मुझे कुछ :: कक्षा-> नया () अधिक स्पष्ट होने के लिए, क्योंकि यह मॉड्यूल पर एक विधि को कॉल करने के लिए मानक सम्मेलन का पालन करता है, और पर्ल में, 'नई' विधि विशेष नहीं है - एक निर्माता को कुछ भी कहा जा सकता है, और नया() कुछ भी कर सकता है (हालांकि बेशक हम आम तौर पर इसे एक निर्माता बनने की उम्मीद करते हैं)
एक और उत्कृष्ट संदर्भ: [अप्रत्यक्ष लेकिन अभी भी घातक] (http://www.shadowcat.co.uk/blog/matt-s-trout/indirect-but-still-fatal/) – Ether