मैं पर्ल के लिए एक इंटरैक्टिव कंसोल कैसे शुरू कर सकता हूं?


264

मैं irbरूबी के लिए या pythonअजगर के लिए कमांड के समान पर्ल के लिए एक इंटरैक्टिव कंसोल कैसे शुरू कर सकता हूं ?

जवाबों:


297

आप एक तुच्छ कार्यक्रम पर पर्ल डिबगर का उपयोग कर सकते हैं, जैसे:

perl -de1

वैकल्पिक रूप से एलेक्सिस सुक्रिह का पर्ल कंसोल एप्लिकेशन है, लेकिन मैंने इसका उपयोग नहीं किया है।


27
प्रयोग करने योग्य जोड़ने के लिए विचार करें कि आप कुछ minimimaly चाहते rlwrap $ rlwrap perl -d -e 1 आप इतिहास और एक सुसंगत शीघ्र मिलेगा
albfan

control+ Lइस कमांड इंटरफ़ेस के तहत काम नहीं करता है, मुझे स्क्रीन को कैसे रिफ्रेश करना चाहिए?
झेन

1
हेंडसाइट के लाभ के साथ: JAN Sáreník का जवाब सबसे अच्छा लगभग आउट-ऑफ-द-बॉक्स समाधान प्रदान करता है (आपको इंस्टॉल करना पड़ सकता है rlwrap)। सभी तृतीय-पक्ष REPL / कंसोल समाधान, सहित perlconsole, स्थापित करने के लिए बोझिल हैं और अक्सर अधिक सीमाएं होती हैं।
mklement0

3
दुर्भाग्य से, चर perl -de1का समर्थन करने के लिए प्रतीत नहीं होता है my, और हैश या तो काम नहीं करते हैं, किसी कारण के लिए ...
Geremia

1
perlconsoleइन समस्याओं से ग्रस्त नहीं है।
गेरिमिया

60

न केवल मैट ट्राउट ने एक REPL के बारे में एक लेख लिखा था, उन्होंने वास्तव में एक - Devel :: REPL लिखा था

मैंने इसका थोड़ा उपयोग किया है और यह काफी अच्छी तरह से काम करता है, और यह सक्रिय विकास के तहत है।

BTW, मुझे नहीं पता कि किसी ने उस व्यक्ति को नीचे क्यों लगाया, जिसने कंसोल से "पर्ल-ई" का उपयोग करने का उल्लेख किया था। यह वास्तव में एक REPL नहीं है, सच है, लेकिन यह काल्पनिक रूप से उपयोगी है, और मैं इसका हर समय उपयोग करता हूं।


मुझे लगता है कि यह मान लिया गया था कि मुझे सवाल समझ नहीं आया। मुझे लगता है कि मैं इसे थोड़ा संपादित करूँगा। ;-)
जॉनसन

२०१५ के मध्य तक: बस चलाना [sudo] cpan Devel::REPLमेरे लिए काम नहीं आया, न तो OSX १०.१० (पर्ल 5.18.2) पर और न ही उबंटू १४.०४ पर (पर्ल 5.18.2): मुझे रनटाइम त्रुटियाँ गुम मॉड्यूल की शिकायत है; एक स्थापित किया गया, फिर एक और लापता मॉड्यूल की सूचना दिए जाने के बाद छोड़ दिया गया।
mklement0

@ mklement0 स्वचालित रूप से पूर्वापेक्षा मॉड्यूल को डाउनलोड करने और बनाने के लिए एक cpan सेटिंग है। आपको उस सेटिंग को चालू करना होगा। वैकल्पिक रूप से, जीरो-कॉन्फिग सेमिनमिनस एप्लिकेशन एक बेहतर विकल्प हो सकता है।
स्टारफिश

@ स्टारफ़िश: धन्यवाद; भविष्य के पाठकों के समय को बचाने के लिए (क्योंकि ऐसा लगता है कि उत्तर छोटा हो सकता है): आप इस सेटिंग को कैसे चालू करते हैं?
mklement0

1
वैसे, मैट ट्राउट, re.plलेखक, ने कई विकल्पों को सूचीबद्ध करने वाला एक लेख लिखा था, और वह स्वयं replyइसके बजाय का उपयोग करने का सुझाव देता है re.pl: शैडो.कैट
डेनिलसन सा मैया

36

मैंने एक स्क्रिप्ट लिखी जिसे मैं "psh" कहता हूं:

#! /usr/bin/perl

while (<>) {
  chomp;
  my $result = eval;
  print "$_ = $result\n";
}

आप जो भी टाइप करते हैं, वह पर्ल में मूल्यांकन करता है:

> gmtime(2**30)
gmtime(2**30) = Sat Jan 10 13:37:04 2004

> $x = 'foo'
$x = 'foo' = foo

> $x =~ s/o/a/g
$x =~ s/o/a/g = 2

> $x
$x = faa

4
क्या यह केवल एक लाइनर के लिए काम करता है या सशर्त ब्रांचिंग, लूप, नेस्टेड स्टेटमेंट जैसे मल्टीलाइन पर्ल कोड को संभाल सकता है?
डेविड

23

यदि आप इतिहास चाहते हैं, तो rlwrap का उपयोग करें । यह आपके ~/bin/ipsउदाहरण के लिए हो सकता है :

#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'

और यह इस तरह दिखता है:

$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl> 

4
इसे अच्छी तरह से लपेटने के लिए यश - रीडलाइन समर्थन न केवल इतिहास के लिए आवश्यक है, बल्कि कमांड लाइन को संपादित करने के लिए भी आवश्यक है। मल्टी-लाइन समर्थन के अपवाद के साथ, यह अच्छी तरह से काम करता है; यहां एक विकल्प के रूप में एक उपनाम संस्करण है alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\':। OSX उपयोगकर्ताओं स्थापित कर सकते हैं rlwrapके माध्यम से Homebrew के साथ brew install rlwrap
mklement0

यहाँ एक संस्करण है जो एक अच्छा आउटपुट देता है जब अभिव्यक्ति एक सूची या एक संदर्भ का मूल्यांकन करती है:rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
मिचौ

21

मुझे लगता है कि आप एक REPL (पढ़ें, मूल्यांकन, प्रिंट, लूप) इंटरफ़ेस के बारे में पूछ रहे हैं। ऐसा करने के कुछ तरीके हैं:

  • मैट ट्राउट का एक लेख है जो बताता है कि कैसे लिखना है
  • एड्रियानो फरेरा ने कुछ विकल्पों का वर्णन किया है
  • और अंत में, आप irc.perl.org पर IRC पर आशा कर सकते हैं और कई लोकप्रिय चैनलों में एक eval बॉट की कोशिश कर सकते हैं। वे आपके द्वारा पास किए जाने वाले पर्ल के चक्रों का मूल्यांकन करेंगे।

1
मैट ट्राउट का लेख कुछ साल पहले से नीचे है, आप इसे यहाँ देख सकते हैं: web.archive.org/web/20100212100032/http://chainsawblues.vox.com/…
lep

1
मैट ट्राउट अब REPLs की सूची की तारीख तक अधिक है, जो वह सुझाता है
क्यूबेरिक

20

मैं कमांड लाइन को कंसोल की तरह उपयोग करता हूं:

$ perl -e 'print "JAPH\n"'

फिर मैं अपने बैश इतिहास का उपयोग पुरानी आज्ञाओं को वापस पाने के लिए कर सकता हूं । हालांकि, यह राज्य को संरक्षित नहीं करता है।

यह फॉर्म सबसे उपयोगी है जब आप "एक छोटी सी बात" का परीक्षण करना चाहते हैं (जैसे कि पर्ल प्रश्नों का उत्तर देना)। अक्सर, मुझे लगता है कि इन कमांडों को शेल स्क्रिप्ट या मेकफाइल में कटा हुआ शब्दशः मिलता है।


1
कुछ गोले के साथ, जैसे fish, आपको इसकी आवश्यकता भी नहीं है \n
trysis

15

पायल के लिए बनाए गए पर्ल के लिए इंटरेक्टिव कंसोल नहीं है। हालाँकि आप संबंधित डीबगिंग करने के लिए पर्ल डीबगर का उपयोग कर सकते हैं। आप इसे -d विकल्प के साथ चालू करते हैं, लेकिन आप इसके बारे में जानने के लिए 'man perldebug' की जांच कर सकते हैं।

थोड़ा गुगली करने के बाद, एक अलग प्रोजेक्ट है जो एक पर्ल कंसोल को लागू करता है जिसे आप पा सकते हैं http://www.sukria.net/perlconsole.html

उम्मीद है की यह मदद करेगा!


अजीब बात है कि इस उत्तर को कोई उत्थान नहीं मिला है, भले ही यह पहले से स्वीकृत उत्तर से अधिक था और थोड़ी अधिक जानकारी भी प्रदान करता है। +1
Junuxx


13

दो लोकप्रिय पर्ल आरईपीएल हैं।

  1. देवल :: आरईपीएल महान है।
  2. लेकिन IMO का उत्तर बेहतर है।

7
उत्तर देने की अनुशंसा के लिए +1। जब मैं आईआरसी पर एक अच्छा पर्ल आरईपीएल (कंसोल) के बारे में पूछता हूं तो डीईएल :: आरईपीएल के लेखक ने खुद ही अपने समाधान का सुझाव दिया। उत्तर स्वतः-पूर्णता के साथ भी आता है जो किसी वस्तु के उपलब्ध तरीकों और विशेषताओं का निरीक्षण करने के लिए बहुत आसान है। मैं निम्नलिखित कमांड के साथ Ubuntu पर उत्तर स्थापित कर सकता है sudo apt-get install libreply-perl:। फिर इसे replyएक टर्मिनल में टाइप करके चलाया जा सकता है ।
एपर्टेक्स

आप एमड रन रिप्लाई कैसे इंस्टॉल करते हैं? न तो मेटाकपेन, न ही जीथब पृष्ठ निर्देश प्रदान करता है।
फिलिप

12

मैंने perliएक पर्ल REPL बनाया है , जो Linux, macOS और Windows पर चलता है ।

इसका फोकस ऑटोमैटिक रिजल्ट प्रिंटिंग, सुविधाजनक डॉक्यूमेंटेशन लुक्स और रेगुलर-एक्सप्रेशन मैचों का आसान निरीक्षण है।
आप यहां स्क्रीनशॉट देख सकते हैं ।

यह स्टैंड-अलोन ( अकेले पर्ल के अलावा कोई अन्य निर्भरता नहीं है) काम करता है, लेकिन स्थापना की rlwrapदृढ़ता से अनुशंसा की जाती है ताकि कमांड लाइन संपादन, लगातार कमांड इतिहास और टैब-पूरा करने का समर्थन किया जा सके - यहां और पढ़ें ।

स्थापना

  • यदि आपके पास Node.js स्थापित है:

    npm install -g perli
  • अन्यथा:

    • यूनिक्स -जैसे प्लेटफॉर्म: इस स्क्रिप्ट को perliअपने सिस्टम के पथ के फ़ोल्डर के रूप में डाउनलोड करें और इसके साथ निष्पादन योग्य बनाएं chmod +x

    • विंडोज : इस स्क्रिप्ट को अपने सिस्टम के पथ के एक फ़ोल्डर में perli.pl( .plविस्तार पर ध्यान दें ) के रूप में डाउनलोड करें ।
      अगर आपको पेरली का आह्वान करने में कोई आपत्ति नहीं है perli.pl, तो आप बिल्कुल तैयार हैं।
      अन्यथा, perli.cmdनिम्न सामग्री के साथ एक ही फ़ोल्डर में नामित बैच फ़ाइल बनाएं @%~dpn.pl %*:; यह बस के रूप में मंगलाचरण सक्षम बनाता है perli


1
मैं इसे शुरू कर सकते हैं की तरह perldocसे perliआरईपीएल की तरह 'someCommand ?'। ऐसा लगता है कि इसे कुछ समय के लिए अपडेट नहीं किया गया है, लेकिन क्या आप अभी भी पेरली बनाए हुए हैं?
sdkks

1
@sdkks: यदि आपको कोई समस्या मिलती है, तो इसे GitHub पर रिपोर्ट करें और मैं इसे ठीक करने का प्रयास करूंगा। perliथोड़ी देर में अपडेट नहीं किया गया है, क्योंकि मेरे व्यक्तिगत उपयोग में मैं किसी भी मुद्दे पर नहीं आया हूं, और कुछ अन्य लोग इसका उपयोग करते हैं, लेकिन, जहां तक ​​मुझे पता है, यह अभी भी विज्ञापित के रूप में काम करता है।
mklement0

7

मैंने हमेशा किया:

rlwrap perl -wlne'eval;print$@if$@'

5.10 के साथ, मैंने इसे स्विच किया है:

rlwrap perl -wnE'say eval()//$@'

(rlwrap वैकल्पिक है)



6

Devel से re.pl :: REPL



4

पर्ल में कंसोल नहीं है लेकिन डीबगर को एक के रूप में इस्तेमाल किया जा सकता है। कमांड प्रॉम्प्ट पर, टाइप करें perl -de 1। (मूल्य "1" कोई फर्क नहीं पड़ता, यह सिर्फ एक वैध कथन है जो कुछ भी नहीं करता है।)

पर्ल शेल के लिए कुछ विकल्प भी हैं ।

अधिक जानकारी के लिए perlfaq3 पढ़ें ।


4

आप यहाँ psh में देख सकते हैं: http://gnp.github.io/psh/

यह शेल पर एक पूर्ण है (आप उदाहरण के लिए बैश के प्रतिस्थापन में इसका उपयोग कर सकते हैं), लेकिन पर्ल सिंटैक्स का उपयोग करता है .. इसलिए आप मक्खी आदि पर तरीके बना सकते हैं।


3

डेबियन / उबंटू के तहत:

$ sudo apt-get install libdevel-repl-perl
$ re.pl

$ sudo apt-get install libapp-repl-perl
$ iperl

3

मैट ट्राउट का सिंहावलोकन सूचियों पांच विकल्प, से perl -de 0के बाद, और वह सिफारिश की गई है Reply, अगर प्लगइन्स के माध्यम से तानाना महत्वपूर्ण है, या tinyreplसे Eval::WithLexicalsएक न्यूनतम, शुद्ध पर्ल समाधान है कि ReadLine समर्थन और शाब्दिक हठ शामिल के लिए,।


2

अद्यतन: जब से मैंने एक डाउनलोड करने योग्य REPL बनाया है - मेरा दूसरा जवाब देखें

दृष्टि के लाभ के साथ:

  • तृतीय-पक्ष समाधानों मौजूदा जवाब के बीच में उल्लेख किया है या तो कर रहे हैं बोझिल स्थापित करने के लिए और / या गैर तुच्छ, अस्पष्ट बिना अतिरिक्त चरणों के काम नहीं है - कुछ समाधान होना दिखाई कम से कम आधा छोड़ दिया।
  • एक प्रयोग करने योग्य REPL को कमांड-लाइन-एडिटिंग कीबोर्ड सपोर्ट और हिस्ट्री सपोर्ट के लिए रीडलाइन लाइब्रेरी की ज़रूरत है - यह सुनिश्चित करना कि यह कई थर्ड-पार्टी सॉल्यूशंस के लिए परेशानी का स्थान है।
  • यदि आप CLI स्थापित करते हैं rlwrap, जो किसी भी कमांड को रीडलाइन सपोर्ट प्रदान करता है, तो आप इसे यूपीएल बनाने के लिए एक साधारण पर्ल कमांड के साथ जोड़ सकते हैं , और इस तरह से तृतीय-पक्ष आरईपीएल समाधान के बिना कर सकते हैं।
    • पर OSX, आप स्थापित कर सकते हैं rlwrapके माध्यम से Homebrew के साथ brew install rlwrap
    • लिनक्स डिस्ट्रोस को rlwrapअपने संबंधित पैकेज प्रबंधकों के माध्यम से पेश करना चाहिए ; उदाहरण के लिए, उबंटू पर, उपयोग करें sudo apt-get install rlwrap
    • और एक पर्ल कमांड के संयोजन के लिए JAN Sáreník का उत्तर देखें rlwrap

आपको JAN के जवाब के साथ क्या नहीं मिलेगा :

  • स्वत: पूर्ण करने
  • मल्टी-लाइन स्टेटमेंट दर्ज करने की क्षमता

एकमात्र तृतीय-पक्ष समाधान जो इन्हें प्रदान करता है (गैर-तुच्छ स्थापना + अतिरिक्त, गैर-स्पष्ट चरणों के साथ), psh है , लेकिन:

  • इसने लगभग 2.5 वर्षों में गतिविधि नहीं देखी है

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


JAN Sáreník के उत्तर को एक तरह से बेहतर बनाया जा सकता है:

  • डिफ़ॉल्ट रूप से, यह सरणियों / सूचियों / के रूप में hashtables प्रिंट scalars , यानी, केवल उनके प्रिंट तत्व गिनती , जबकि यह बजाय अपने तत्वों की गणना करने में आसान होगा।

यदि आप Data::Printerमॉड्यूल [sudo] cpan Data::Printerको एक बार के संचालन के रूप में स्थापित करते हैं , तो आप इसे फ़ंक्शन के उपयोग के लिए REPL में लोड कर सकते हैं p(), जिसके लिए आप गणना के लिए सूचियाँ / सरणियाँ / हैशटेबल्स पास कर सकते हैं।

यहां रीडलाइन और सपोर्ट के साथ एक उपनाम दिया गया हैiperlData::Printer , जिसे आप अपनी POSIX- जैसे शेल के इनिशियलाइज़ेशन फ़ाइल (जैसे ~/.bashrc) में डाल सकते हैं :

alias iperl='rlwrap -A -S "iperl> " perl -MData::Printer -wnE '\''BEGIN { say "# Use `p @<arrayOrList>` or `p %<hashTable>` to print arrays/lists/hashtables; e.g.: `p %ENV`"; } say eval()//$@'\'

उदाहरण के लिए, आप हैशटेबल के माध्यम से सभी पर्यावरण चर प्रिंट करने के लिए निम्न कार्य कर सकते हैं %ENV:

$ iperl        # start the REPL
iperl> p %ENV  # print key-value pairs in hashtable %ENV

जेएएन के जवाब के साथ, एक अभिव्यक्ति का स्केलर परिणाम स्वचालित रूप से मुद्रित होता है; उदाहरण के लिए:

iperl> 22 / 7  # automatically print scalar result of expression: 3.14285714285714


0

सीपिया और पीडीई के पास खुद की आरईपीएल (जीएनयू एमएसीएस के लिए) भी हैं।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.