2009-09-29 12 views
21

मैंने सुना है कि पर्ल स्ट्रिंग मैनिपुलेशन (और लाइन शोर;) के लिए जाने-जाने वाली भाषा है। क्या कोई मुझे दिखाने के लिए अन्य भाषा (उदाहरणों) के साथ उदाहरण और तुलना प्रदान कर सकता है?पर्ल सबसे स्ट्रिंग मैनिपुलेशन कार्यों के लिए सबसे अच्छा विकल्प क्यों है?

+3

http://www.google.com/search?q=perl+regex –

+3

मुझे यकीन नहीं है कि आपने यह प्रश्न क्यों पूछा। क्या आप एक पर्ल ट्यूटोरियल की तलाश में हैं? या आप जानना चाहते हैं कि सीखने में समय निवेश करना है या नहीं? – Ashwin

+0

विकल्प बी। मैंने एक काफी जटिल लुआ लिपि लिखी है जो स्ट्रिंग मैनिप्ल्यूशन की तरह है और मैं सोच रहा हूं कि यह पर्ल में काफी आसान होगा या नहीं। – RCIX

उत्तर

17

यह बहुत ही व्यक्तिपरक है, इसलिए मैं यह नहीं कहूंगा कि पर्ल सबसे अच्छा विकल्प है, लेकिन यह निश्चित रूप से स्ट्रिंग मैनिपुलेशन के लिए एक वैध विकल्प है। अन्य विकल्प टीसीएल, पायथन, एडब्ल्यूके इत्यादि हैं।

मुझे पर्ल की क्षमताओं को पसंद है क्योंकि इसमें तेज समर्थन के लिए उत्कृष्ट समर्थन (टिप्पणी में उल्लिखित पॉज़िक्स से बेहतर) है और निहित चर मूलभूत स्ट्रिंग क्रंचिंग करना आसान बनाता है बहुत कम कोड के साथ।

यदि आपके पास * निक्स पृष्ठभूमि है जो आप पहले से जानते हैं, तो बहुत से लोग पर्ल पर भी लागू होंगे, जो बहुत से लोगों के लिए चुनना काफी आसान बनाता है।

+3

असल में, यह बहुत ही उद्देश्यपूर्ण है, जब [रीजिक्स पर्ल में पॉज़िक्स मानक की तुलना में अधिक सुविधाएं हैं] (http://en.wikipedia.org/wiki/Regular_expression#Perl-derivative_regular_expressions)। – xxxxxxx

+1

@ spx2: काफी मेला। व्यक्तिपरक हिस्सा यह था कि क्या कोई व्यक्ति पर्ल को प्रत्येक अर्थ में जाने-जाने वाली भाषा मानने पर विचार करेगा। कुछ लोग सामान्य रूप से पर्ल के बारे में बहुत जंगली नहीं हैं, इसलिए वे अपनी regex क्षमताओं के बावजूद इसे पसंद नहीं कर सकते हैं। मतदाता नीचे –

+0

, कृपया एक टिप्पणी छोड़ दें। –

5

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

+0

लोग इसे उच्च प्रशंसा गाते हैं क्योंकि यह है कि "कार्यक्षमता एक्स के साथ सॉफ़्टवेयर विकसित करने के प्रयास में" प्रयासों के बहुत महत्वपूर्ण मीट्रिक सहित पर्ल बहुत महत्वपूर्ण है। – DVK

1

शुरुआत में, पर्ल को आसान रिपोर्ट प्रसंस्करण और टेक्स्ट फ़ाइलों से निपटने के लिए विकसित किया गया था, इस प्रकार इसे एक बहुत मजबूत REGEX समर्थन मिला है। REGEX पर अधिकांश जानकारी आप perldoc में पा सकते हैं।

4

इन दिनों बच्चे! दिन में वापस, हम सभी SNOBOL था - और हमें यह पसंद आया! इसे कभी कोशिश करें ... आप कभी नहीं जानते, जब आप इस पर्ल फड अपना कोर्स चलाते हैं तो आप वापस गिरने के लिए कुछ सम्मानजनक चाहते हैं!

+2

+1 लॉल ... (15 वर्ण) – RCIX

2

पर्ल स्ट्रिंग मैनिपुलेशन कार्यों के लिए व्यापक रूप से उपयोग किया जाता है क्योंकि इसकी स्ट्रिंग मैनिपुलेशन एपीआई सीखना आसान है। और इसके regex भी व्यापक रूप से प्रयोग किया जाता है। यह बहुत लंबे समय तक उपयोग में है और यूनिक्स पृष्ठभूमि वाला कोई भी व्यक्ति आसानी से पर्ल उठाएगा। ऐतिहासिक रूप से, पर्ल को रिपोर्टिंग कार्यों के लिए 80 के उत्तरार्ध में विकसित किया गया था और पाठ प्रसंस्करण कार्यों के लिए "मूल रूप से" विकसित किया गया था। तो आज तक, प्रवृत्ति जारी है क्योंकि स्ट्रिंग मैनिपुलेशन कार्य या टेक्स्ट प्रसंस्करण कार्य वाला कोई भी व्यक्ति पहली पसंद के रूप में पर्ल का चयन करेगा। ऐसा नहीं है कि पाइथन जैसी अन्य भाषाएं कार्य तक नहीं हैं, लेकिन इस क्षेत्र में पर्ल लोकप्रिय है।

13

पर्ल -> प्रैक्टिकल निष्कर्षण और भाषा

पर्ल की ताकत (जब यह स्ट्रिंग प्रसंस्करण के लिए आता है) रिपोर्टिंग यह में निहित है बहुत शक्तिशाली Regular expression engine है।

इस वजह से पर्ल का उपयोग करते हुए बायो इन्फोर्मेटिक्स के क्षेत्र में बहुत से लोग अपने मुख्य उपकरण के रूप में हैं, इसलिए BioPerl on PerlMonks के बारे में बड़ी संख्या में पोस्ट हैं। जैव सूचना विज्ञान में वे तारों के साथ बहुत काम करते हैं, वे उन्हें "अनुक्रम" कहते हैं (मुझे इसके बारे में ज्यादा जानकारी नहीं है)।

Perlmonks.org, पर्ल समुदाय का दिल है हिट की अपार संख्या की जाँच जब आप के लिए site:perlmonks.org regex 20,000 hits

खोज आप CPAN पर मॉड्यूल की सरासर संख्या नजरअंदाज नहीं कर सकते:

यह बहुत स्पष्ट सबूत है कि जब स्ट्रिंग प्रसंस्करण की बात आती है तो पर्ल एक बहुत शक्तिशाली भाषा है। लाइन शोर के लिए पर्ल की प्रतिष्ठा 4 प्रकार से आता है:

इसलिए यदि आप कुछ स्ट्रिंग प्रसंस्करण करना चाहते हैं और आप पर्ल का उपयोग कर रहे हैं, आप इसे कवर किया :)

+7

परल के रेगेक्स इंजन को पीसीआरई नहीं कहा जाता है। पीसीआरई पर्ल के रेगेक्स इंजन का फीचर-सीमित "क्लोन" है। – jrockway

+1

@ ज्रॉकवे, धन्यवाद, आप सही हैं। लेकिन विकिपीडिया से पर्ल 5.9.4 के रूप में, पीसीआरई री :: इंजन :: पीसीआरई मॉड्यूल के माध्यम से पर्ल के डिफ़ॉल्ट नियमित अभिव्यक्ति इंजन के प्रतिस्थापन के रूप में भी उपलब्ध है। – xxxxxxx

+1

विकिपीडिया में जो कुछ भी आप पढ़ते हैं उस पर भरोसा न करें। :) –

8

अपने प्रश्न के दूसरे भाग के समाधान के लिए मिल गया है

  • पीढ़ी चालाक (अपने स्वयं के अच्छे के लिए) हैकर्स (या कभी कभी सिर्फ हैक करता), जो चतुराई महत्व देते हैं और पठनीयता से अधिक दिखावा: लोगों की। "अगर इसे लिखना मुश्किल था तो इसे पढ़ना मुश्किल होना चाहिए" सिर्फ एक पौराणिक दृष्टिकोण नहीं है।

  • जो लोग अच्छे सॉफ्टवेयर विकास को नहीं जानते हैं, अगर यह उन्हें एक सुराग के साथ सिर पर मारा जाता है। जैसे कि नामित चर के बजाय $_ का उपयोग कर प्रोग्राम में दो अक्षर सहेजते हैं। एक घोंसला वाले क्षेत्र में। या टिप्पणियों के बारे में कभी नहीं सुना। या स्वयं दस्तावेज पहचानकर्ता। या सफेद जगह।

  • जो लोग सोचते हैं कि सॉफ्टवेयर विकास == कोड गोल्फ। अधिक गंभीरता से, कोड में वर्णों की मात्रा जितनी कम होगी, उतनी ही पठनीय है, क्योंकि वे गलत समझते हैं कि कोड में "संक्षिप्तता" का अर्थ क्या है।

    (नोट: पहले 2 सेट परस्पर अनन्य नहीं हैं)

  • जो लोग कोड/पर्ल में हैक (जैसे sysadmins) जो बहुत कम प्रशिक्षण, अनुभव या प्रोत्साहन सॉफ्टवेयर विकास करना है। जैसे पर्ल का उपयोग करने वाले लोगों का प्रतिशत जो खराब शैली और खराब कोड गुणवत्ता वाले त्वरित और गंदे हैक करते हैं, शायद पाइथन कहते हैं।

    बस संदर्भ के लिए, मेरे $ काम में भयानक पर्ल "कोड" का 80% इस के अंतर्गत आता है - यह वित्तीय विश्लेषकों द्वारा लिखा गया था जो एक पर्ल बुक और कुछ पूर्व स्क्रिप्ट लेने के लिए काफी समझदार हैं, एक स्क्रिप्ट को क्लोन करें क्या व्यवसाय की आवश्यकता है, और सीएस/प्रोग्रामिंग पृष्ठभूमि नहीं है इस बारे में चिंता करने के लिए कि उनका कोड कितना पठनीय/रखरखाव योग्य था।

अन्य (और कम बनावटी) शब्दों में, आप, सुंदर अविश्वसनीय रूप से पठनीय और आसान पर्ल में सॉफ्टवेयर बनाए रखने के लिए लिख सकते हैं। यह सब इस बात पर निर्भर करता है कि लेखन कौन करता है, उनकी प्राथमिकताओं और कौशल क्या हैं। इसके अलावा, किसी भी अन्य भाषा के साथ, आप इसके साथ एक दुखी लिखने-केवल गड़बड़ लिख सकते हैं।

अन्य भाषाओं से अंतर यह है कि अक्सर, पर्ल में किए जाने पर कहा गया गड़बड़ की केवल एकमात्रता, वास्तव में गैर-अक्षर वर्णों (सिगिल और खराब लिखित RegExes में विशेष पात्रों) की बहुत अधिक घनत्व होती है। यह उच्च घनत्व वास्तव में, असीमित रूप से लाइन शोर का अनुमान लगा सकता है।

+2

मैं इसे इसके साथ पेश करूंगा: मुझे पर्ल पसंद है। हालांकि यह केवल प्रोग्रामर नहीं है जो लिनेनोइज़ की पर्ल की प्रतिष्ठा के लिए दोषी है। अधिकांश भाषाओं के विपरीत पर्ल, बहुत सी चीजों को पूरी तरह से करने की अनुमति देता है (जैसे $ _, $ 0, आदि चर, कार्यों के लिए निहित तर्क इत्यादि) जहां आपको स्पष्ट रूप से घोषित करने की आवश्यकता नहीं है कि आप कुछ करना चाहते हैं, लेकिन perl कुछ उचित करेगा। यह एक अद्भुत समय बचाने की उपाय है, लेकिन उन लोगों के लिए पूरी तरह से समझ में नहीं आता है जो अर्थशास्त्र को नहीं समझते हैं। इसकी तुलना पाइथन से करें, जो एक भाषा है जो लगभग कोई भी पाइथन लिखे बिना भी पढ़ सकती है। – Falaina

+1

पर्ल के पास निहित तर्क हैं जिनके बारे में आप बात करते हैं। और एक प्रोग्रामर के रूप में आप उनका उपयोग करना चुन सकते हैं या नहीं। – xxxxxxx

+0

@ spx2 - आमेन। @ फालेना - यह वही है जो मैं बात कर रहा था। इस बारे में बात करने के लायक कोई सॉफ़्टवेयर डेवलपर $ _ का उपयोग करके मृत पकड़ा जाएगा, स्वयं को 5-लाइन फेंकने वाले ईप्रसनल उपयोग त्वरित हैक के बाहर, खुद को उलझाया जाएगा। – DVK

6

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

1

मैं इस बात से असहमत हूं कि पर्ल टेक्स्ट प्रोसेसिंग के लिए सबसे अच्छी भाषा है।सरल चीजें आसान हैं; बार के साथ foo को प्रतिस्थापित करने के लिए:

$data =~ s/foo/bar/g; 

कठिन चीजें सरल नहीं हैं, हालांकि। उदाहरण के लिए Data::SExpression देखें। यह बहुत आसान कुछ करने के लिए कोड है।

import Text.ParserCombinators.PArrow 

data Atom = QuotedString String | Symbol String 
      deriving (Show, Eq) 

data Sexp = Sexp [Sexp] | Atom Atom 
      deriving (Eq) 


quotedString :: Char -> Char -> MD a Atom 
quotedString quoteChar escapeChar = between q q inside >>^ QuotedString 
    where q = char quoteChar 
      inside = many $ (char escapeChar >>> anyChar) <+> notChar quoteChar 

doubleQuotedString, symbol :: MD a Atom 
doubleQuotedString = quotedString '"' '\\' 
symbol = word >>^ Symbol 

atom, sexp :: MD a Sexp 
atom = (doubleQuotedString <+> symbol) >>^ Atom 
sexp = atom <+> (between (char '(') (char ')') sexp' >>^ Sexp) 
     where sexp' = sepBy1 sexp spaces 

बस 'कह:

PArrow साथ हास्केल में एक समान कार्यान्वयन की तरह कुछ लग रहा है। पर्ल अंत-सभी-और-सभी टेक्स्ट मैनिपुलेशन नहीं है। पर्ल को अन्य भाषाओं में पसंद करने के कई कारण हैं, लेकिन पार्सिंग उनमें से एक नहीं है।

+0

http://search.cpan.org/perldoc/Data::SExpress आयन –

+0

पाठ लिखना असंभव है। पार्सर कॉम्बिनेटर.प्रोरो मॉड्यूल perl में? यह मेरे लिए नया है। –

+0

असंभव नहीं है। भी नहीं किया। सवाल यह है कि "पार्सर्स के लिए पर्ल का उपयोग क्यों करें", न कि "एक पार्सर संयोजक पुस्तकालय लिखने के लिए पर्ल का उपयोग क्यों करें"। दूसरे प्रश्न का उत्तर पहले के जवाब के समान नहीं है। – jrockway

0

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

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

संक्षेप में, इस नाखून के लिए पर्ल एक अच्छा हथौड़ा होगा। पाइथन और रूबी नाखून-बंदूकें होंगी।

+0

पायथन भी आधुनिक नहीं है (लगभग पर्ल के समान उम्र), लेकिन रुबी है। –

+2

चलो। 1 99 3 (या 1 99 5) (रूबी) http://en.wikipedia.org/wiki/Ruby_%28programming_language%29 बनाम 1991 (पायथन)। न तो बिल्कुल एक बच्चा है। –

2

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

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

संबंधित मुद्दे