2009-12-11 10 views
6

जब लोग कहते हैं कि "पर्लिंग पर पर्ल बहुत अच्छा है" तो लोगों का क्या अर्थ है?जब लोग कहते हैं कि "पर्लिंग पर पर्ल बहुत अच्छा है" तो लोगों का क्या अर्थ है?

पर्ल या रूबी जैसी अन्य स्क्रिप्टिंग भाषाओं की तुलना में पर्ल किसी भी बेहतर या अधिक शक्तिशाली कैसे है?

+2

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

+0

आधा बेक्ड, नाजुक कोड * सही * है जो कि थकाऊ, एक-ऑफ कार्यों के प्रकार के लिए है जो किसी को उचित रूप से हाथ में पर्ल के साथ संपर्क करने की उम्मीद कर सकता है ... लॉग फ़ाइलों को पार्स करने के लिए एक बीएनएफ व्याकरण लिखना बस एक जैसा नहीं लगता है समय का सदुपयोग। – Shog9

+2

ऐसी कई चीजें हैं जिनके पास व्याकरण नहीं है, और पर्ल आपको इससे निपटने के लिए बहुत सारे टूल देता है। पर्ल के टूलबॉक्स में Regexes एकमात्र चीज नहीं है। –

उत्तर

18

वे मतलब है कि पर्ल मूल रूप से प्रसंस्करण पाठ फ़ाइलों के लिए डिजाइन किया गया था और यह है कि यह आसान बनाने के लिए कई सुविधाएं होती हैं:

  • पर्ल स्ट्रिंग प्रसंस्करण के लिए कई कार्य हैं: substr, index, chomp, length, grep, sort, reverse, lc, ucfirst, ...
  • पर्ल स्वचालित रूप से मूल्यों और तारों के बीच परिवर्तित होता है, इस पर निर्भर करता है कि मूल्य का उपयोग कैसे किया जाता है। (उदाहरण के लिए आप फ़ाइल से अक्षर स्ट्रिंग '100' पढ़ सकते हैं और पहले एक पूर्णांक रूपांतरण के लिए स्ट्रिंग करने की आवश्यकता के बिना इसे जोड़ सकते हैं)
  • पर्ल स्वचालित रूप से प्लेटफ़ॉर्म एन्कोडिंग (जैसे विंडोज़ पर सीआरएलएफ) से रूपांतरण को संभालता है और आपके प्रोग्राम के भीतर एक तार्किक न्यूलाइन ("\ n")।
  • नियमित अभिव्यक्तियों को एक अलग पुस्तकालय होने के बजाय वाक्यविन्यास में एकीकृत किया जाता है।
  • पर्ल की नियमित अभिव्यक्तियां शक्ति और कार्यक्षमता के लिए "स्वर्ण मानक" हैं।
  • पर्ल में पूर्ण यूनिकोड समर्थन है।

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

+7

हालांकि कुछ लोगों को $ _ से, हालांकि मुझे लगता है कि यह उस सूची में है। यह विचार कि आपके पास "वर्तमान विषय" या चीज है जिस पर आप काम कर रहे हैं और इसके लिए विभिन्न चरणों को लागू करना बहुत अच्छा है। –

+1

मैं यह नहीं कहूंगा कि पर्ल स्वचालित रूप से लाइन अंतराल को संभालती है। मुझे लगता है कि आप भ्रमित कर रहे हैं कि विंडोज में एक पाठ फ़ाइल में लिखने के साथ। वापस आने वाले डेटा को पढ़ने से कुछ खास नहीं होता है जब तक कि आप पर्ल को बताएं कि क्या करना है। –

+0

@brian: प्लेटफॉर्म न्यूलाइन अनुक्रम और लॉजिकल "\ n" के बीच रूपांतरण दोनों पढ़ने और लिखने (निश्चित रूप से 'बिनमोड' को अनदेखा करने पर होता है)। मुझे पता है कि आप इसके बारे में अच्छी तरह जानते हैं इसलिए मुझे आपकी टिप्पणी उलझन में मिलती है। मुझे लगता है कि मैं कह सकता था कि "पर्ल आपको अपने ओएस के अनुक्रम के बारे में चिंता करने की बजाए तार्किक न्यूलाइन के संदर्भ में सोचने देता है" यह बताए बिना कि यह कैसे करता है। –

1

सी/सी ++/जावा की तुलना में पर्ल टेक्स्ट पार्सिंग में बहुत अच्छा है।

+8

इगोर को शायद अपने जवाब का विस्तार करना चाहिए कि जब पर्ल साथ आया, तो पाठ प्रसंस्करण एक छोटा काम नहीं था। 20 साल बाद, लोग अब उस दर्द की सराहना नहीं करते हैं कि सब कुछ पीसीआरई है, आदि –

4

पर्ल ईटीएल या बैच प्रसंस्करण गति के लिए भी अच्छा है। फ़ाइल लेने के लिए यह कोड की न्यूनतम मात्रा है; map प्राप्त करने के लिए split के माध्यम से इसे दबाएं, रिकॉर्ड पर कुछ तार्किक व्यावसायिक कार्रवाइयां करें, और इसे डिस्क पर वापस लिखें।

मुझे लगता है कि डेटा पार्सिंग के बाद डेटा प्रोसेसिंग अधिक डेटा प्रोसेसिंग है, लेकिन डेटा प्रोसेसिंग थोक डेटा पार्सिंग है।

11

किसी अन्य भाषा की विफलताओं का बयान होने के लिए पर्ल की ताकत का बयान न लें। पर्ल पाठ प्रसंस्करण के लिए अच्छा है, लेकिन इसका मतलब रूबी या पायथन चूसना नहीं है।

जब लोग पर्ल के बारे में "पार्सिंग के लिए अच्छा" होने के बारे में बात करते हैं, तो वे मुख्य रूप से पर्ल के इतिहास को प्रतिबिंबित कर रहे हैं; उस दिन का आविष्कार किया गया था जब भारी कर्तव्य पाठ प्रसंस्करण आसान नहीं था। सी या सी ++ में से कुछ करने का प्रयास करें (जावा का अभी तक आविष्कार नहीं किया गया था, या तो!)। दिन में वापस, लैरी अपने काम को sed और awk के साथ करने की कोशिश कर रहा था, लेकिन उनकी सीमाओं में चल रहा था। उन्होंने एक ऐसा उपकरण बनाया जिसने पाठ को काम करने के लिए और भी आसान बना दिया।

पर्ल अभी भी टेक्स्ट मैनिपुलेशन कार्यों के लिए बहुत अच्छा है, लेकिन अब कई अन्य भाषाएं हैं।

0

शायद यह इसलिए है क्योंकि perl documentation में वर्णित लोगों के लिए इसका उपयोग किया जाता है, इसलिए कई लोगों के लिए पर्ल के साथ टेक्स्ट फ़ाइलों को पार्स करने के लिए यह आम हो गया है। रूबी या पायथन को बाहर नहीं करना है, यह आईएमएचओ के घर का नाम है।

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