पर्ल ऑब्जेक्ट एनवायरनमेंट


 * मैच संस्करण के लिए, मैच (कर्नेल) देखें

'पर्ल ऑब्जेक्ट एनवायरनमेंट' या 'पीओई' रोक्को कैपुटो एट अल द्वारा पर्ल प्रोग्रामिंग लैंग्वेज में लिखी गई पर्ल मॉड्यूल की एक लाइब्रेरी (कंप्यूटिंग) है।

सीपीएएन से:
 * "पीओई मूल रूप से एक सतत ऑब्जेक्ट सर्वर और रनटाइम एनवायरनमेंट के मूल के रूप में विकसित किया गया था। यह एक जनरल पर्पस मल्टीटास्किंग और नेटवर्किंग फ्रेमवर्क के रूप में विकसित हुआ है, जो इवेंट और टीके (सॉफ़्टवेयर) और जीटीके टूलकिट जैसे अन्य इवेंट प्रोग्राम लूप्स के लिए एक कंसिस्टेंट इंटरफ़ेस प्रदान करता है।"

पीओई अर्कीटेक्चर: अब्स्ट्रैक्शन की लेयर्स
पीओई, पर्ल ऑब्जेक्ट एनवायरनमेंट को एक लिटिल मॉड्यूलर ऑपरेटिंग सिस्टम के रूप में सोचा जा सकता है। एक या अधिक पीओई प्रोग्राम या इंस्टेंसेस एक साथ चलाए जा सकते हैं और सामान्यतः कोअपरेटिव मल्टीटास्किंग के लिए उपयुक्त होते हैं। पीओई पैकेज में नेमस्पेस और एब्स्ट्रैक्शन (कंप्यूटर विज्ञान) सम्मिलित हैं जो ओपन-एंडेड सीपीएएन-शैली कन्वेंशन में पीओई के भविष्य के डेवलपमेंट को गाइड करते हैं।

इवेंट लेयर
इनफॉर्मल अर्कीटेक्चर में नीचे की तरफ कर्नेल (ऑपरेटिंग सिस्टम) के साथ लेयर्स का एक सेट होता है। यह छोटा कर्नेल ईवेंट लेयर को प्रतिनिधित्व करता है जो प्रत्येक चल रहे पीओई उदाहरण के मेन लूप के रूप में कार्य करता है। पहली कॉल इवेंट डिस्पैचर - पीओई::कर्नेल को होती है।

पीओई::कर्नेल नेमस्पेस में फ़ंक्शंस का एक सूट होता है जो कर्नेल में ही प्लग किया जाता है। ये लूप एब्स्ट्रैक्शन पीओई के स्टैंडर्डआइज़ड इवेंट लूप ब्रिज इंटरफ़ेस - पीओई::लूप के पश्चात डिज़ाइन किए गए हैं। इन्हें रनटाइम सर्विसेस और इंटरप्रोसेस संचार के लिए तथा एक सरल सुविधा प्रदान करने के लिए आवश्यकतानुसार मिश्रित और मिलान किया जा सकता है। मूल कार्य पीओई::लूप::इवेंट, पीओई::लूप::पोल और पीओई::लूप::सैलैक्ट हैं। पीओई::लूप::टीके और पीओई::लूप::जीटीके भी उपलब्ध हैं जो बाहरी एनवायरनमेंट में अन्य लूप ब्रिजों में हुक प्रदान करते हैं। यदि यह पर्याप्त नहीं है, तो पीओई::लूप कर्नेल एब्स्ट्रैक्शन रीयूज़ेबल सिग्नल कॉलबैक, टाइम या अलार्म कॉलबैक, और फ़ाइलहैंडल गतिविधि कॉलबैक के साथ-साथ इवेंट लूप को इनिशियलाइज़ करने, एक्सीक्यूट करने और फाईनलआईजिंग इवेंट लूप जैसे एडमिनिस्ट्रेटिव कार्य प्रदान करता है।

एक हाइयर लेवल पैकजिंग फ्रेमवर्क भी है - पीओई::मैक्रो और उनकी टैस्टिंग के लिए एक डिबगिंग उपयोगिता जिसे पीओई::प्रीप्रोसेसर कहा जाता है। इस फ्रेमवर्क से पीओई::मैक्रो::यूज़बाइट्स प्राप्त हुआ है।


 * नोट: जैसा कि पर्ल ट्रेडिशन का एक मैंडेट है, की पीओई भी एक मूविंग टार्गेर है।

सीपीएएन ने यह देखने के लिए निरंतर चेक किया है, कि कम्युनिटी ने संग्रह में कौन सी नई चीज़ें रखी हैं। (...और पर्ल का मोटो याद रखें: लैरी वॉल के अनुसार "ऐसा करने की एक से अधिक विधि हैं।")

रनिंग कर्नेल पीओई::सेशन आर्किटेक्चर द्वारा रुलड़ अब्स्ट्रैक्शन के दूसरे सेट से निर्मित प्राइमर्डियल फाइनाइट स्टेट मशीनों के माध्यम से ड्रिवेन होता है। एक पीओई::सैशन को लगभग ट्रिवियली रूप से फ़ंक्शंस, क्लास विधि (कंप्यूटर प्रोग्रामिंग) और/या ऑब्जेक्ट मेथड की इवेंट्स के मानचित्र के मैप में परिभाषित किया गया है जो उन्हें हैंडल करते है। पीओई::सैशन ऑब्जेक्ट में इसके सभी ईवेंट हैंडलर द्वारा साझा किया गया एक स्टोरेज स्पेस भी होता है, जिसे हीप (प्रोग्रामिंग) कहा जाता है। आप उन्हें किसी भी तरह से स्लाइस करलें, स्टेट्स सॉलिड्ली रूप से पहचाने जाते हैं और स्पष्ट रूप से परिभाषित होते हैं।

एक फीचरफुल इवेंट हैंडलर एक पीओई::सैशन सबक्लास है जिसे पीओई::एनएफए कहा जाता है - एक इवेंट-ड्रिवेन नॉनडेटर्मिनिस्टिक फाइनाइट ऑटोमेटन (एक स्मार्ट फाइनाइट स्टेट मशीन), यह ईवेंट हैंडलर ईवेंट, पोल, यूज़र सैलेक्शन याअदर एक्सटर्नल ईवेंट की आवश्यकता के अनुसार एक स्ट्रिक्टली से परिभाषित स्टेट से दूसरे में चला जाता है। यह स्टेट मशीन रेलटीवीली इनफॉर्मल पीओइ::सैशन की तुलना में एक्सिक्यूशन पाथ पर अधिक टाइटर ट्रैकिंग की अनुमति देते हुए जेनरिक इवेंट-ड्रिवेन प्रोग्रामिंग थ्रेड (कंप्यूटिंग) की एक वाइड रेंज को एनकेप्सुलेटेड करने का कार्य करती है।

आई/ओ लेयर
कर्नेल की अगली आवश्यकता इनपुट-आउटपुट हैंडलर के लिए है जो व्हील्स नामक एकल I/O लेयर में उपस्थित होते हैं। व्हील्स एक्शन्स प्रारंभ करते हैं, उनके परिणामस्वरूप लो लेवल इवेंट्स को हैंडल करते है, और उनका उपयोग करने वाले सैशंस के लिए हाइयर लेवल इवेंट्स का उत्पादन करते हैं। सेशन और लूप्स की जैसे व्हील्स, यूनिफार्म अब्स्ट्रैक्शंस के एक समान सेट से निर्मित होते हैं - 'पीओई::व्हील' - जो कर्नेल के शीर्ष पर स्थित होते हैं। पीओई के बेस डिस्ट्रीब्यूशन में सात हाई-स्पेशलाइज्ड और वैल-डिफाइंड से परिभाषित व्हील्स हैं:
 * पीओई::व्हील::रन - पाइप, फोर्क और कभी-कभी एक्सेक का उपयोग करके चाइल्ड प्रोसेसेस को बनाता है और उनके साथ इंटरैक्ट करता है। इंटरेक्शन, चाइल्ड के स्टैंडर्ड इनपुट और आउटपुट के माध्यम से की जाती है।
 * पीओई::व्हील::सॉकेटफेक्टरी - क्लाइंट और सर्वर सॉकेट को उनकी स्थापना की प्रतीक्षा किए बिना बनाने की एक विधि है।
 * पीओई::व्हील::कर्सेस - कर्सेस (प्रोग्रामिंग लाइब्रेरी) टेक्स्ट इंटरफ़ेस लाइब्रेरी से नॉन-ब्लॉकिंग इनपुट के लिए एक हैंडलर, सीपीएएन कंपोनेंट्स जैसे कि कर्स::यूआई::पीओई और टर्म::विज़ुअल इस पर आधारित हैं।
 * पीओई::व्हील::फॉलोटेल - एवर ग्रोइंग फ़ाइल, जैसे लॉग या कोलाबोरेटीव डाक्यूमेंट्स, को उसकी टेल पर एक हैंडल रखकर ट्रैक करता है।
 * पीओई::व्हील::लिसेनएक्सेप्ट - पीओई::व्हील::सॉकेटफेक्टरी का एक सबसेट जिसका उपयोग उपस्थित सर्वर सॉकेट पर सुनने और रिमोट क्लाइंट से कनेक्शन एक्सेप्ट करने के लिए किया जाता है।
 * पीओई::व्हील::रीडलाइन - एक नॉन-ब्लॉकिंग, इवेंट ड्रिवेन टर्म::रीडलाइन का एनालॉग है।
 * पीओई::व्हील::रीडराइट - पीओई के लिए एक उच्च-प्रदर्शन एनबीआईओ फ़ाइल हैंडलर जो 'फ़ाइलहैंडल' पर बफ़र्ड रीड और राइट के लिए पीओई के डिवाइस ड्राइवर और फ़िल्टर (सॉफ़्टवेयर) का उपयोग करता है जो नेक्स्ट लेयर पर आती है - पीओइस का अपना एक लिटिल फाइल सिस्टम है।

फ़ाइल लेयर्स
ड्राइवर फ़ाइल हैंडल को रीड और राइट करने का वास्तविक कार्य करते हैं। वे पीओई::ड्राइवर मॉड्यूल में निहित लैस अब्स्ट्रैक्शन परिभाषाओं के अनुसार बनाए गए हैं। इसे राइट करने के समय इम्प्लिमेंटेड किया गया है, मेन ड्राइवर पीओई::ड्राइवर::सीसआडब्लू है - एक यूनिवर्सल फ़ाइलहैंडल रीडर/राइटर जो विशेष रूप से पीओई::व्हील::रीडराइट के लिए डिज़ाइन किया गया है।

नेक्स्ट लेयर, पीओइ::फ़िल्टर से निर्मित और संभवत: अधिकांश पर्ल ऑबफस्केशन एफिशियानाडोस का फोकस (नीचे पीओइ #पीओइ ह्यूमर देखें), पीओइ::फ़िल्टर सेट है: "फ़िल्टर रॉ स्ट्रीम्स के बीच ट्रांसलेट करते हैं और टेस्टी दादा के कुक्ड चंक्स" पर `सुंगो'
 * पीओई::फ़िल्टर::ब्लॉक - इनपुट को फिक्स्ड लेंथ वाले ब्लॉक के रूप में पार्स करता है। आउटपुट साइड पर, यह केवल डेटा को बिना किसी अंसकैथेड़ के पास करता है।
 * पीओई::फ़िल्टर::एचटीटीपीडी - इनपुट को एचटीटीपी रिक्वेस्ट्स के रूप में पार्स करता है और उन्हें एचटीटीपी::रिक्वेस्ट ऑब्जेक्ट में अनुवादित करता है। आउटपुट साइड पर, यह एचटीटीपी::रिस्पॉन्स ऑब्जेक्ट लेता है और उन्हें वेब क्लाइंट/यूज़र-एजेंट को भेजे जाने के लिए उपयुक्त ऑब्जेक्ट में परिवर्तित कर देता है।
 * पीओई::फ़िल्टर::लाइन - आने वाली स्ट्रीम को लाइनों में पार्स करता है और आउटगोइंग लाइनों को स्ट्रीम में परिवर्तित कर देता है। यह बहुत बेसिक हुआ करता था, लेकिन रीसेंट इम्प्रूवमेंट में न्यूलाइन ऑटोडिटेक्शन जैसी इंट्रेस्टिंग फीचर्स जोड़ी गई हैं।
 * पीओई::फ़िल्टर::रीफेरेंस - पीओई प्रोग्रामों के बीच या पीओई और अन्य पर्ल प्रोग्रामों के बीच पर्ल स्ट्रक्चर्स भेजने के लिए उपयोग किया जाता है। इनपुट साइड पर, फ्रोज़ेन डेटा (स्टोरेबल, फ्रीज़थॉ, वाईएएमएल, या कुछ अन्य सीरीएलाइज़ेशन मैकेनिज्म के माध्यम से) को पर्ल डेटा स्ट्रक्चरस को थावड किया जाता है। आउटपुट साइड पर, फ़िल्टर को दिए गए रिफेरेंस फ़्रीज़ हो जाते हैं। यदि कंप्रेस::ज़ेडलिब इंस्टॉल्ड है तो इसे रिक्वेस्ट पर डेटा को कंप्रेस्ड भी किया जा सकता है।
 * पीओई::फ़िल्टर::स्ट्रीम - कुछ नहीं करता है। यह बिना किसी परिवर्तन के केवल डेटा को पास करता है।

पूरी सूची के लिए पीओई at सीपीएएन देखें

पीओई कंपोनेंट्स
पीओई::कंपोनेंट्स डॉक्यूमेंटेशन के अनुसार पीओई में सेवेरल लार्जर पैकेज प्रोग्रामिंग लिखे गए हैं। ये इवेंट-ड्रिवेन मॉड्यूल हैं, जिनमें से कई लिटिल डेमॉन (कंप्यूटिंग) के रूप में कार्य करते हैं जो बड़े पैकेजों को सर्विसेस प्रदान करते हैं जिनसे वे संबंधित हैं। उनमें से कुछ मॉड्यूल के बीच हाइयर लेवल कम्युनिकेशन की सुविधा प्रदान करते हैं, विशेष रूप से स्टैंड-अलोन एप्लिकेशन जिन्हें पर्ल के मेन डिस्ट्रीब्यूशन से इंडिपेंडेंट रहने की आवश्यकता होती है।

सामान्यतः, पीओई कंपोनेंट्स रेडी-मेड हाइयर लेवल प्रोसीज़र्स हैं जो स्पेसिफिक लार्ज टास्क करते हैं। कुछ उदाहरण:

"पीओई कंपोनेंट्स हाइली रीयूजेबल ट्रेंड्स लाइब्रेरीज़ होती हैं जो टीडियस टास्क को हैंडल करते हैं, फ्रीइंग प्रोग्रामर को अधिक इंट्रेस्टिंग थिंग्स पर ध्यान केंद्रित करना होता है। चूंकि, यह किसी भी लाइब्रेरी के लिए ट्रू होना चाहिए।"
 * कंपोनेंट्स::सर्वर::टीसीपी - एक स्पेशल-पर्पस टीसीपी सर्वलेट
 * कंपोनेंट्स::क्लाइंट::टीसीपी - एक पीओई-अवेयर टीसीपी क्लाइंट
 * पीओई::कंपोनेंट्स::आईआरसी - एक नेअर्ली फुलफीचर्ड वाला आईआरसी क्लाइंट
 * पीओई::कंपोनेंट्स::सर्वर::आईआरसी - एक RFC 2810 से RFC 2813 अनुरूप आईआरसी सर्वर (अंडर डेवलपमेंट)
 * पीओई::कंपोनेंट्स::यूज़रबेस - एक यूज़र ऑथेंटिकेशन और पर्सिस्टेंस सर्वलेट सर्वलेट

पीओई ह्यूमर

 * सीपीएएन पर एक्मे::पीओई::नी मॉड्यूल
 * पीओई क्या है के अंत में कई सिली एक्रोनिम एक्सपेंशन

यह भी देखें

 * इवेंट-ड्रिवेन प्रोग्रामिंग
 * ट्विस्टेड (सॉफ्टवेयर), पायथन (प्रोग्रामिंग लैंग्वेज) के लिए एक कंपरेबल फ्रेमवर्क

बाहरी संबंध

 * पीओई Home Page (a Wiki site)