Monday, August 27, 2018

चिखलाचं डबकं

कुठल्यातरी गप्पांमध्ये माझा एक मित्र एकदा म्हणाला  -  इंग्रज गेले पण इंग्रजी सोडून गेले.  विषय वाटतो त्यापेक्षाही बराच गहन आहे.  असो.  बोलू त्याविषयी जमलं तर कधीतरी.  भारताच्या ABC पैकी C म्हणजे क्रिकेट हा गोऱ्या साहेबाने इथे सोडलेला खेळ.  त्याच इंग्रजीचा एक भाग.

इथे इंग्रज हा खेळ खेळायचे तेव्हा इथल्या जनतेला ह्या खेळाबद्दल अप्रूप होतं.  साहेबाचा खेळ म्हणून.  काहीजण तर साहेबाचा खेळ कसा खेळायचा ते शिकले.  सर्वसामान्यांच्या कल्पनेपलीकडची गोष्ट.  दहा पाच वर्षात कधीमधी साहेबाच्या खेळात साहेबालाच हरवलं तर जग जिंकल्याचा आनंद व्हायचा.

मग साहेबाच्याच देशात जाऊन वर्ल्ड कप काय जिंकला.  जगात देश एकशे चौऱ्यांशी.  त्यातले आठ देश म्हणतात आम्हीच फक्त वर्ल्ड कप खेळणार.  बाकीचे खेळायला पात्र नाहीत.  अहो जगभरात इतरही शेकडो खेळ आहेत.  त्यांच्याही स्पर्धा होतात.  पण फक्त आम्हीच खेळायला पात्र, बाकीचे सगळे अपात्र असा माजुर्डेपणा इतर कोणी केलेला दिसत नाही.  आणि खेळ तरी कसला.  ह्या खेळात कुरापतींना, खाबुगिरीला, भांडणांना अनेक जागा.  मग होणार काय.  खेळ राहिला देखाव्याला आणि पैशाचा बाजार चालु.

चिखलाचं डबकं
खेळाला पुढं करून त्याच्यामागुन चालणारा बाजार कल्पना करवणार नाही इतका मोठा.  तो राहुद्या.  उघडपणे खिशातला टॉवेल बाहेर काढुन दाखवतात.  घराघरात टीव्ही समोर बसलेलं खुळं बघतंय.  दूरवर बसलेले डॉन हजारो कोटी कमावतायत.  दिसायला आकर्षक असलं तरी हे आहे चिखलाचं डबकं.  दिसतं तसं नसतं.  म्हणून तर जग फसतं. 

Friday, August 17, 2018

ट्रॅव्हल + ऑरबिस = अमेझिंग

वैराटगड.  माझ्या आवडत्या किल्ल्यांपैकी एक. मागच्याच महिन्यात माझी भेट झाली होती.  इथे स्वप्नील ने ट्रेक ठेवला.  दीप्ती, खुशी, आणि मी तिघेही तयार झालो.  स्वप्नीलच्या ट्रेव्हॉरबिस बरोबरचा आमचा पहिलाच ट्रेक.  तसं स्वप्नील बरोबर ट्रेक म्हणजे पर्वणीच असते.

स्वप्नीलच्या ट्रेव्हॉरबिस कडुन मिळालेली ट्रेक वार्ता
रविवार १२ ऑगस्ट सकाळी सहाच्या शुभमुहूर्तावर आम्ही गुडलक चौकात गाडीत बसलो.  पंधरा पार्टिसिपन्ट्स आणि बरोबर स्वप्नील आणि तुषार असं सतरा जणांचं टोळकं जमलं.  सकाळचं वातावरण सुखकारक होतं.  वरुणराजांच्या कृपेमुळे.  वाटेत चहा पोहे वडापाव चा कार्यक्रम करून कापशेवाडीत पोहोचलो.  आम्ही व्याजवाडी मार्गे वैराटगड चढून जाणार होतो आणि इथे कापशेवाडीत उतरणार होतो.  संध्याकाळी कुठे येऊन थांबायचं ति जागा ड्रायव्हरला दाखवुन तिथे न थांबता आल्या मार्गी परत निघालो व्याजवाडीच्या दिशेने.  जाताना वाटेत श्री भगवती अन्नपूर्णा हॉटेल मधुन जेवणाचं पार्सल घेतलं.  व्याजवाडीत पोहोचतो तेव्हा साडेदहा होत होते.

व्याजवाडीतुन ट्रेक ला सुरुवात केली तिथलं एक झाड
बहुतेक जण वैराटगडला कापशेवाडीतुन जातात.  व्याजवाडी मार्गे फारसं कोणी जात नाही.  व्याजवाडी मार्गे चढून जायचं आणि कापशेवाडीत उतरायचं हा स्वप्नीलचा प्लॅन मला उत्तम वाटला.  समोर दिसणारा डोंगर आपण आता कसा चढून जाणार, आपल्याला वर पोहोचायला किती वेळ लागणार, वाट सोपी आहे का, वगैरे प्रश्न टोळक्यातल्या काहींच्या मनात घोळत असणार हे हेरून स्वप्नीलने सुरुवातीलाच antidote दिला.  हा साधा सोपा पण अतिशय गुणकारी डोस दिवसभर प्रभावी ठरला.

गावकऱ्यांनी गाई गुरं शेळ्या मेंढ्या डोंगरावर चरायला आणलेल्या.  काही ठिकाणी घाणेरीची झुडपं दिसली.

घाणेरी
उग्र दर्प येणारी, रंगीबेरंगी लहान लहान फुलं मिरवणारी हि झुडपं मुळची भारतवासी नाहीत.  घाणेरी ...  नावाप्रमाणे हे झुडूप काही उपयोगाचं तर नाहीच आणि प्रसंगी त्रासदायक आहे.  मुळचं आफ्रिका आणि अमेरिकेतलं हे झुडूप भारतासकट आशिया, ऑस्ट्रेलिया वगैरे प्रदेशात घुसखोर आहे.  उष्ण्कटिबंधीय प्रदेशातून आल्यामुळे या वनस्पतीला आपल्याकडचं उष्ण वातावरण उत्तम मानवतं.  हि रानटी झुडपं मोकळ्या रानांवर, रस्त्यांच्या कडांना, कुंपणांजवळ फोफावत जातात.  तुरट गोड चविची हि फळं काहींनी लहानपणी खाल्लीही असतील.  ही फळं विषारी असतात.  फळांच्या उग्र वासामुळे व त्यातल्या विषारी घटकांमुळे जनावरं ही फळं खात नाहीत.  एखाद वेळेस एखादं नवखं जनावर ही फळं खाऊन आजारी पडतं.  बाराही महिने फुलणारी आणि वाढणारी ही वनस्पती आपल्या स्थानिक पर्यावरणाला त्रासदायक बनलीय.  हिचं उच्चाटन कसं करायचं हा आपल्यासमोरचा एक न सुटलेला प्रश्न आहे.

असो.  ज्या प्रकारे सुरुवात झाली त्याच्यावरून आजचा ट्रेक वेळेत पूर्ण होणार असं दिसत होतं.

रानफुलं आणि शेजारच्या हिरव्या पानावर हिरवा कीटक
जांभळ्या छटातली हि रानफुलं मला अजुन ओळखता आली नाहीयेत.  शेजारच्या हिरव्या पानावरचा हिरवा कीटक निरखून पाहिलं तरच दिसणारा.  हिरव्यागच्च भरलेल्या रानात ह्याचे कितीतरी बहीण भाऊ मित्र परिवार संचारत असतील.

भुरभुर पावसामुळे वाट सोपी नव्हती.  पण अवघडही नव्हती.  काही ठिकाणी दिशादर्शक खुणा आहेत.

दिशादर्शक खूण
सुरुवातीच्या टप्प्यात पोझिशन मागे पुढे झाल्या आणि नंतर आम्हा सतरा जणांची एक रांग बनली.  वीस गाड्यांची फॉर्मुला वन शर्यत अशीच असते.  सुरुवातीला काही वेळ कोणी पुढे तर कोणी मागे.  नंतर गाड्यांचा क्रम जमत जातो.  मधल्या काळात शर्यत साचेबद्धपणे पुढे सरकते, जर काही अपघात वगैरे झाला नाही तर.  मधल्या काळात पिट स्टॉप होतात ज्यातही काही वेळा गाड्यांचे क्रम बदलतात.  शेवटच्या भागात आपापल्या कुवतीनुसार आणि त्या दिवसातल्या घडामोडींनुसार परत काही क्रम बदलतात.  इतकं साधर्म्य असलं तरी ट्रेकिंग ही शर्यत नव्हे.  इथे कोणाची कोणाशी स्पर्धा नाही.  इथे सर्वजण एकमेकांना बरोबर घेऊन जातात.  नवीन ओळखी व्हायला, मैत्री जमायला सह्याद्रीत फार वेळ लागत नाही.

रानफुलं  ...  दर्शनाच्या कॅमेऱ्यातुन
Common name = Indian Coleus
Botanical name = Plectranthus barbatus
ह्या जांभळ्या फुलांना मराठीत काय म्हणतात मला माहित नाही.

कुठे एकेकटी तर कुठे छोट्या मोठ्या थव्यांनी विविध रानफुलं बहरलेली.  ऑगस्ट आणि सप्टेंबर मधल्या ट्रेक चा हा फायदा असतो.  रानफुलं बरीच बघायला मिळतात.

पेरुव्हिअन झिनिआ
फिकट लालसर रंगाची पेरुव्हिअन झिनिआ आकर्षक दिसतात.  मुळची अमेरिकेतली ही वनस्पती आशिया, ऑस्ट्रेलिया अशा ठिकाणी रानातुन आढळून येते.

टोळीतल्या प्रत्येकाची तोंडओळख करून घेण्याची स्वप्नीलची पद्धत अनोखी आहे.  डोंगर चढताना छोटा ब्रेक घेऊन चार जणांची तोंडओळख.  पुढच्या ब्रेकला पुढचे चार जण.  दमलेल्यांचा ब्रेकही होतो आणि न दमलेल्यांना कंटाळाही येत नाही.

स्वप्नीलच्या कॅमेऱ्यातुन  ...  व्याजवाडी मार्गे वैराटगड चढताना

काही ठिकाणी पिवळ्या धम्मक सोनकीचा बहर.  ही तर ह्यांची सुरुवात आहे.  अजुन महिन्याभरात सह्याद्रीतल्या किल्ल्यांवर, पठारांवर ह्यांची संस्थानं वसतील.

सोनकी
तुषारला थोडं पुढे रहायला सांगुन मी सगळ्यात मागची जागा घेतली.  हळुहळु पुढे सरकणाऱ्या ड्रॅगनचं शेपुट.

पावसाचा एक दोन वेळा शिडकाव झाला.  ह्या भागात जोरदार पाऊस क्वचितच पडतो.  नाजुक गुलाबी फुलं बऱ्याच ठिकाणी.  बहुदा रॉक बालसम.  तुम्हाला ओळखता आलं नक्की काय आहे तर मला जरूर कळवा.

हे रॉक बालसम असावे
जस जसं वर चढत गेलो तस तसा दूरपर्यंतचा प्रदेश दृष्टीक्षेपात आला.  एकच्या सुमारास किल्ल्याच्या मुख्य दरवाज्यासमोर पोहोचलो.  नेहमीप्रमाणे इथल्या दगडावर बसुन मी फोटो काढला.

मुख्य दरवाज्यासमोरच्या दगडावर बसुन फोटो

किल्ल्यावर पोहोचल्यावर पहिला कार्यक्रम होता जेवणाचा.  किल्ला फिरणं नंतर.  चार मुलं जी आमच्या पुढे चढून आली होती ती आता उतरून जात होती.  ह्यांनी किल्ला फिरून पहिला, का तसेच जातायत ?

मंदिरासमोरचा नंदी  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
मंदिरासमोरच्या ओटीवर जेवणाची पंगत मांडायचा आमचा विचार होता.  बोचऱ्या थंड वाऱ्यात आणि ओल्या फरशांवर बसुन इथे जेवणं अवघड होतं.  पण आज आमचं नशीब चांगलं होतं.  किल्ल्यावर आलेल्या बुवांनी एका मोठ्या खोलीत आम्हाला बसण्याची व्यवस्था केली.  मधे शेकोटी आणि भोवती गोल करून आम्ही बसलेलो.

दीप्तीच्या कॅमेऱ्यातुन  ...  स्वप्नील उसळ गरम करतोय
जेवण मस्त मजेत झालं.  जेवल्या नंतर बुवांनी सर्वांना मंदिरात आरतीला बोलावले.  बुवांच्या एकामागून एक आरत्या चालुच.  संपेचनात.  शेवटी आमची चुळबुळ सुरु झाली तसं बुवांनी आटोपतं घेतलं.

इथल्या देवळा बाहेर एक वीरगळ ठेवलेली आहे.  वीरगळ म्हणजे काय ते स्वप्नीलने टोळीला सांगितले.  आरत्या संपवुन मंदिराबाहेर पडलो तरी बुवा आम्हाला सोडेनात.  आम्हाला वैराटगडाची इत्यंभूत माहिती दिली. वैराटगडाबद्दल पोवाडा म्हणून दाखवला.  इतिहासात असतील नसतील त्या नोंदी आणि दाखले दिले.  स्वप्नीलचा व्हाइब्स ऑफ वैराटगड ट्रेक बुवांनी असा बराच वेळ hijack केला.  शेवटी एकेकाने तिथून काढता पाय घेतला.  बुवांनी इतिहासाशी खेळ केल्यामुळे स्वप्नील वैतागला होता.  इतिहासात आज काही नव्याने भर पडली असा मी शेरा मारला.  असो.  बुवांनी आम्हाला जेवायला बसण्याची व्यवस्था उत्तम केली हा त्यातला फायद्याचा भाग.  तसंच पहिल्या श्रावणी सोमवारी शंकराच्या मंदिरात नानाविध आरत्या झाल्या.  जमेच्या बाजु बघून पुढे जायचे.  काय.

आता आम्ही किल्ला फिरायला सुरुवात केली.

वैराटगडाचा फेरफटका  ...  दर्शनाच्या कॅमेऱ्यातुन
ट्रेक पुन्हा रुळावर आला आणि स्वप्नीलने माहितीचा खजिना खुला करायला सुरुवात केली.  किल्ल्याच्या तटबंदीतले जुन्या काळचे टॉयलेट. साठलेले पाणी वाहून जायला ठेवलेल्या तटबंदीतल्या जागा.  जंग्या.  फंजी.  आजुबाजुला दिसणारे किल्ले, डोंगर, गावं.  चोर दरवाजा.  किल्ल्यावर यायच्या वाटा.

वैराटगडाचा चोर दरवाजा बाहेरून दूरवरून ओळखणं अशक्य आहे.  तटबंदीच्या बाजुने किल्ल्यातुन चालताना लक्ष ठेऊन राहिल्यास ही जागा सापडते.  किल्ल्याला चोर दरवाजा हा हवाच.  एकच दरवाजा असणे हा किल्ल्याचा मोठा दोष आहे.  हा सुज्ञ विचार सुचलेला मी नाही हो पहिला.  साडेतीनशे वर्षांपूर्वी ह्या भागात एक थोर पराक्रमी राजा होऊन गेला.  मुघलांच्या सततच्या आक्रमणांनी देश लुटला जात होता.  रयत नागवली जात होती.  एका हिमती स्त्रीने ठरवलं आपली हि जमीन पारतंत्रातुन मुक्त करवायची.  जनतेवर होणारे अत्याचार थांबवायचे.  तिने तिच्या मुलाला तयार केलं. मुलगाही पराक्रमी आणि तितकाच हुशार.  ह्या सह्याद्रीच्या मदतीने त्याने भारतभत पसरलेल्या महाबलाढ्य मुघल साम्राज्याला जेरीस आणलं.  त्यांचा स्वराज्याचा लढा पुढे इतका यशस्वी झाला कि एक वेळ आली जेव्हा दिल्लीच्या गादीवर कोणी का बसेना भारतवर्षात दूर दूर पर्यंत मराठ्यांचाच दरारा होता.  पण आपल्यापेक्षा कित्येक पटींनी ताकदवान शत्रूला नमवणं महाकठीण होतं.  प्रत्येक बारीक सारीक छोट्या मोठ्या गोष्टींपासून सगळ्याचा विचार करावा लागत होता.  आज्ञापत्रातल्या दुर्ग प्रकरणात काय सांगितलंय पहा.
किल्ल्यास एक दरवाजा थोर आयब आहे, त्याकरितां गड पाहून, एक दोन तिन दरवाजे, तशाच चोरदिंड्या करून ठेवाव्या.  त्यामधें हमेशा राबत्यास पाहिजे तितक्या ठेवून वरकड दरवाजे व दिंड्या चिणून टाकाव्या.

दीप्तीच्या कॅमेऱ्यातुन  ...  चोर दरवाजा

चोर दरवाजातुन उतरून जाता येतं.  पण आमच्या आजच्या कार्यक्रमात ते नव्हतं.  तसा वैराटगडाचा इतिहास शिवपूर्वकालीन.  कोल्हापूरच्या शिलाहार राजांपैकी दुसऱ्या भोज राजाने हा किल्ला बांधून घेतला.  इतिहासात हा किल्ला फारसा गाजला नसला तरी परिसरावर लक्ष ठेवण्यासाठीचं हे एक उत्तम लष्करी ठाणं होतं.

व्हाइब्स ऑफ वैराटगड  ...  स्वप्नील बरोबर आमची टोळी

तटबंदी शेजारून जात जात आम्ही पोहोचलो किल्ल्याच्या पलीकडच्या टोकाजवळ.  गावातले काही जण पलीकडच्या म्हसवे पठाराकडे चालले होते.  वैराटगडाचा आकार काहीसा विषमबाहु त्रिकोणासारखा आहे.

ह्या दगडावर बसुन मि दरवेळी फोटो काढतो.  आज खुशीला बसवून फोटो काढला.
घाबरू नका.  माझ्यासारखी तीही sure footed आहे.
किल्ल्याच्या पलीकडच्या टोकाजवळ दोन पीर आहेत आणि तिकडे बायकांनी जाऊ नये असा गावकऱ्यांचा संकेत आहे.  स्वप्नीलकडून कळलेली ही माहिती मला नवीनच होती.

किल्ल्यावरची सदर, सैनिकांची घरं वगैरे वास्तु आज अस्तित्वात नाहीत.  आता फक्त उध्वस्त झालेले अवशेष, जोत्याचे दगड विखुरलेले दिसतात.  किल्ल्याची गोल फेरी पूर्ण करून आम्ही पोहोचलो प्रवेशद्वारापाशी.  इथे दगडात कोरलेली हनुमानाची मूर्ती आणि शेजारीच हनुमानाचं देऊळ आहे.  शक्तीची देवता गडावर हवीच.

वैराटगडावरचा मारुती  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
चारच्या सुमारास गड उतरायला सुरुवात केली.  त्यापूर्वी स्वप्नीलने कापशेवाडीत जाणाऱ्या वाटेची टोळीला कल्पना दिली.

वैराटगडाचं प्रवेशद्वार  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
आता आम्ही कापशेवाडीच्या दिशेने उतरायला लागलो.  वाटेतल्या एक दोन अवघड जागा सोडल्या तर बाकीचा पहिला अर्धा भाग उतरायला सोपा आहे.  इथे झाडं भरपूर.  पण पक्षी फारसे नाहीत.  पक्षांचा सर्वात जास्त किलबिलाट मि ऐकलाय तो घनगडाच्या पायथ्याच्या रानातला.  भर दुपारी इतका किलबिलाट कि वर गडावर ऐकू येत होता.

एक अवघड जागा पार करताना  ...  तुषार मदतीला थांबलाय
खुशी आता स्वप्नीलच्या बरोबर टोळीत पुढे राहुन उतरायला लागली.

उतरताना थकायला होत नाही.  त्यामुळे फारसे ब्रेक घेण्याची गरज पडत नाही.  मधल्या छोट्या पठारावर एक ब्रेक झाला.  इथे आम्हाला एक मोठा बेडूक दिसला.

मोठा बेडूक
छोट्या पठारापासुन खाली जाणाऱ्या वाटेला तीव्र उतार आहे.  काहीही गडबड गोंधळ न होता सर्वजण सुखरूप उतरलो.  ट्रेकिंग शूज कोणते चांगले ह्यावर एक चर्चा झाली.

आरव आणि खुशी  ...  आशिष सरांच्या कॅमेऱ्यातुन
पलीकडे दिसतोय दुबळ्या नावाचा डोंगर
आमच्या टोळीत आठ वर्षापासुन ते पन्नास वर्षापर्यंत अशी विविधता होती.  डोंगर उतरून गेल्यावर समोर एक अजस्त्र पसरलेला वटवृक्ष दिसत होता.  त्याचे फोटो घेऊन गाडीकडे निघालो.

कापशेवाडीतला अजस्त्र वटवृक्ष  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
आम्ही सकाळी दाखवलेल्या मोकळ्या जागी गाडी आणुन ड्रायव्हर तयार होता.  इथे चार ऐतिहासिक समाध्या आहेत.  एक मोठी आणि तिन छोट्या.  छोट्या समाध्यांवर शिवपिंड, पाय वगैरे सुरेख कोरीवकाम आहे.

कापशेवाडीतल्या ऐतिहासिक समाध्या  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
मोठ्या समाधीवर एका बाजुला शिलालेख कोरलेला आहे.  ह्या कोणाच्या समाध्या आहेत आणि शिलालेखात काय लिहिलंय त्याचा पत्ता मला अजुन लागला नाहीये.  तुम्हाला काही माहिती असल्यास कृपया मला कळवा.

कापशेवाडीतली  ऐतिहासिक समाधी  ...  फोटो टिपणार सह्याद्रीचा मावळा अमित तागुंडे
समाध्या पाहुन गाडीत बसलो.  वाटेत जेवायला थांबायचा प्लॅन नव्हताच.  पण चहाची वेळ झाली होती.  परत एकदा श्री भगवती अन्नपूर्णा हॉटेल आल्यावर थांबलो.  चहा आणि वडापाव उत्तम मिळाला.  गाडीत गप्पा टप्पा करत पुण्यनगरीतल्या गुडलक चौकात दाखल झालो.

हा ऑफबिट ट्रेक फारच सुरेख झाला.  गर्दी नाही.  कचरा नाही.  पावसाळी हवामान, पण धो धो पाऊस नाही. विविध रानफुलं पहायला मिळाली.  आम्हा पंधरा अधिक दोन सतरा जणांचं रविवार १२ ऑगस्ट २०१८ ह्या दिवसाचं गणित मांडायचं झालं तर ते असं आहे ...
   ट्रॅव्हल + ऑरबिस = अमेझिंग

स्वप्नील खोतचं ट्रेव्हॉरबिस म्हणजे ट्रॅव्हल + ऑरबिस.  थोडक्यात सांगायचं तर जग दुनियेची भटकंती.  छोट्या छोट्या टप्प्यांमधे केलेली.  आत्मविश्वासपुर्वक.  बरोबरच्या टोळक्याला साथीने घेऊन.

Monday, August 6, 2018

How to install Perl modules that are available from CPAN

Last month I conducted Perl training for IBM Pune team.  During conducting the training, I mentioned about modules that are available at CPAN.  The obvious question from course participants was, how to install the modules available from CPAN.  Here's how.

If you don't have time for the details, here's what to do.
Download the tarball (the .tar.gz file) from CPAN.  Unzip and untar the tarball.
# make
# make test
# make install

Or if you have Internet connection available at your system :

# perl -MCPAN -e "install Your::Module"


Well, if you're interested in the full story, then read on.

The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules written in the Perl programming language by over 12,000 contributors.

Like all other modern programming languages, Perl provides a way to use external libraries of code.  The common subroutines could be then used by several programs.  In the Perl culture, these are called modules.

Before we begin with installing a CPAN module, why not check whether it is already installed at the system?  Say, we want to check whether module Data::Dumper is installed or not.  To do that, we could make an attempt to use the Data::Dumper module.  If that turns successful, we have the module installed.  If we see an error, that means the module is not present at our system.

$ perl -e "use Data::Dumper;"
$

No error, so module Data::Dumper is already installed! 

$ perl -e "use XML::Reader;"
Can't locate XML/Reader.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
$

My attempt to use XML::Reader module resulted in an error, indicating that the module is not installed at my system.

Please note : For installing CPAN modules at Linux system, our user account should have root privilege.

There are two ways to install a CPAN module at a Linux system. 
Method 1 : Manual installation by downloading the tarball from CPAN and build from source code using make
Method 2 : Automated installation using the CPAN shell.  This requires connection to Internet.

To begin with, let's see how to install a module using the first (manual installation) method.

Download the tarball from CPAN.  A tarball is a gzip compressed tar file, usually ending with .tar.gz in its name.  For example, .tar.gz file of XML::Reader module is available at https://cpan.metacpan.org/authors/id/K/KE/KEICHNER/XML-Reader-0.65.tar.gz

Here's how I download the tarball using wget.

# wget https://cpan.metacpan.org/authors/id/K/KE/KEICHNER/XML-Reader-0.65.tar.gz  --no-check-certificate
--2018-07-19 13:13:18--  https://cpan.metacpan.org/authors/id/K/KE/KEICHNER/XML-Reader-0.65.tar.gz
Resolving cpan.metacpan.org... 151.101.158.217, 2a04:4e42:25::729
Connecting to cpan.metacpan.org|151.101.158.217|:443... connected.
WARNING: certificate common name e.sni.fastly.netâcpan.metacpan.org
                                                                     HTTP request sent, awaiting response... 200 OK
Length: 75978 (74K) [application/x-gzip]
Saving to: XML-Reader-0.65.tar.gz

100%[===================================================================================================================>] 75,978      --.-K/s   in 0.08s

2018-07-19 13:13:20 (931 KB/s) - XML-Reader-0.65.tar.gz
#


Now unzip and untar XML-Reader-0.65.tar.gz file that we have obtained.

# tar -zxvf XML-Reader-0.65.tar.gz
XML-Reader-0.65
XML-Reader-0.65/README
XML-Reader-0.65/Changes
XML-Reader-0.65/LICENSE
XML-Reader-0.65/dist.ini
XML-Reader-0.65/META.yml
XML-Reader-0.65/MANIFEST
XML-Reader-0.65/Makefile.PL
XML-Reader-0.65/lib/XML
XML-Reader-0.65/lib/XML/Reader.pm
XML-Reader-0.65/lib/XML/Reader_de.pod
XML-Reader-0.65/lib/XML/Reader_fr.pod
XML-Reader-0.65/t
XML-Reader-0.65/t/release-pod-syntax.t
XML-Reader-0.65/t/0010_test_functions.t
XML-Reader-0.65/lib/XML/Reader
XML-Reader-0.65/lib/XML/Reader/Testcases.pm
#


What are these z x v f options of tar command?
From the manual page of tar command :
       -z, --gzip
              filter the archive through gzip
       -x, --extract, --get
              extract files from an archive
       -v, --verbose
              verbosely list files processed
       -f, --file=ARCHIVE
              use archive file or device ARCHIVE
         

A directory named XML-Reader-0.65 would be created in the current working directory.
             
# cd XML-Reader-0.65
#
# ls -l
total 64
-rw-r--r-- 1 root root 14247 Dec 28  2014 Changes
-rw-r--r-- 1 root root   469 Dec 28  2014 dist.ini
drwx------ 3 root root  4096 Jul 19 13:14 lib
-rw-r--r-- 1 root root 18352 Dec 28  2014 LICENSE
-rw-r--r-- 1 root root  1321 Dec 28  2014 Makefile.PL
-rw-r--r-- 1 root root   280 Dec 28  2014 MANIFEST
-rw-r--r-- 1 root root   693 Dec 28  2014 META.yml
-rw-r--r-- 1 root root   402 Dec 28  2014 README
drwxr-xr-x 2 root root  4096 Dec 28  2014 t
#


While in XML-Reader-0.65 directory, execute `perl Makefile.PL`  This will check if all the dependencies are installed, and if all the files listed in the MANIFEST file were included.  If successful, a Makefile will be generated, without any extension.

# perl Makefile.PL
Checking if your kit is complete...
Looks good
Warning: prerequisite Acme::HTTP 0 not found.
Warning: prerequisite XML::Parsepp 0 not found.
Writing Makefile for XML::Reader
[root@.localhost XML-Reader-0.65]#


In this case, two prerequisite modules Acme::HTTP and XML::Parsepp are not found.  So I should install them first and then proceed further.  And what if I continue further without installing the prerequisite modules?  Okay, let's try that.  Next step is to execute `make` in order to compile the source code.

# make
cp lib/XML/Reader_de.pod blib/lib/XML/Reader_de.pod
cp lib/XML/Reader.pm blib/lib/XML/Reader.pm
cp lib/XML/Reader_fr.pod blib/lib/XML/Reader_fr.pod
cp lib/XML/Reader/Testcases.pm blib/lib/XML/Reader/Testcases.pm
Manifying blib/man3/XML::Reader_de.3pm
Manifying blib/man3/XML::Reader::Testcases.3pm
Manifying blib/man3/XML::Reader_fr.3pm
Manifying blib/man3/XML::Reader.3pm
#


Optionally, execute `make test` to run the automated tests.
Although we could skip executing `make test`, this is a recommended step.  Result coming from executing the tests is usually a good indicator of the road ahead.

# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/0010_test_functions.t .. 1/54
#   Failed test 'use XML::Reader;'
#   at t/0010_test_functions.t line 6.
#     Tried to use 'XML::Reader'.
#     Error:  Can't locate Acme/HTTP.pm in @INC (@INC contains: /root/XML-Reader-0.65/blib/lib /root/XML-Reader-0.65/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /root/XML-Reader-0.65/blib/lib/XML/Reader.pm line 7.
# BEGIN failed--compilation aborted at /root/XML-Reader-0.65/blib/lib/XML/Reader.pm line 7.
# Compilation failed in require at t/0010_test_functions.t line 6.
# BEGIN failed--compilation aborted at t/0010_test_functions.t line 6.

#   Failed test 'Test-001 sub XML::Reader::import is defined'
#   at t/0010_test_functions.t line 69.

#   Failed test 'Test-002 sub XML::Reader::activate is defined'
#   at t/0010_test_functions.t line 69.

...

...
...


#   Failed test 'Test-052 sub XML::Reader::Token::extract_proc is defined'
#   at t/0010_test_functions.t line 69.

#   Failed test 'Test-053 sub XML::Reader::Token::extract_decl is defined'
#   at t/0010_test_functions.t line 69.
# Looks like you failed 54 tests of 54.
t/0010_test_functions.t .. Dubious, test returned 54 (wstat 13824, 0x3600)
Failed 54/54 subtests
t/release-pod-syntax.t ... skipped: these tests are for release candidate testing

Test Summary Report
-------------------
t/0010_test_functions.t (Wstat: 13824 Tests: 54 Failed: 54)
  Failed tests:  1-54
  Non-zero exit status: 54
Files=2, Tests=54,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.13 cusr  0.01 csys =  0.18 CPU)
Result: FAIL
Failed 1/2 test programs. 54/54 subtests failed.
make: *** [test_dynamic] Error 255
#

Executing the automated tests usually produces a long output, which I have cut short in the above listing.  In this case, all tests failed.  Possibly because the prerequisite modules are not available.

Although tests have failed, I could execute `make install` to install the module in the correct place.

# make install
Installing /usr/local/share/perl5/XML/Reader_de.pod
Installing /usr/local/share/perl5/XML/Reader.pm
Installing /usr/local/share/perl5/XML/Reader_fr.pod
Installing /usr/local/share/perl5/XML/Reader/Testcases.pm
Installing /usr/local/share/man/man3/XML::Reader_de.3pm
Installing /usr/local/share/man/man3/XML::Reader_fr.3pm
Installing /usr/local/share/man/man3/XML::Reader.3pm
Installing /usr/local/share/man/man3/XML::Reader::Testcases.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
#


Time to check whether XML::Reader module is now available.

# perl -e "use XML::Reader;"
Can't locate Acme/HTTP.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/XML/Reader.pm line 7.
BEGIN failed--compilation aborted at /usr/local/share/perl5/XML/Reader.pm line 7.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
#


So we must install the prerequisite module Acme::HTTP
Then another error would tell that prerequisite module XML::Parsepp can't be located.  I will have to install XML::Parsepp as well, so that all required prerequisite modules are available.

This could be a long way to home.  Before I install the module I intended, I must identify all prerequisite modules and install all of them.  A prerequisite module may have its own prerequisite(s).  This could be a really long way to home, depending upon how many prerequisites we run into.

There is a way available to make this task easier.  By opening a CPAN shell in perl, we could install the required module and all of its prerequisites.  The CPAN shell connects to cpan.org, identifies all prerequisites, downloads all prerequisites and the module we want to install, and installs them in appropriate sequence.  Voila!  All we need is Internet connection to connect to cpan.org

# perl -MCPAN -e "install XML::Reader"

No Internet connection to connect to cpan.org?  Well, the only option left is to get the tarballs (the .tar.gz files) from somewhere else and install each of them in the right sequence, as per the dependencies.

And now if you insist on looking at official documentation, why don't you get a terminal and type `perldoc perlmodinstall` or point your web browser to http://perldoc.perl.org/perlmodinstall.html