পার্লের জন্য আমি কীভাবে একটি ইন্টারেক্টিভ কনসোল শুরু করতে পারি?


264

আমি পার্লের জন্য ইন্টারেক্টিভ কনসোলটি কীভাবে শুরু করতে পারি, irbরুবি বা pythonপাইথনের কমান্ডের অনুরূপ ?

উত্তর:


297

আপনি তুচ্ছ প্রোগ্রামে পার্ল ডিবাগারটি ব্যবহার করতে পারেন:

perl -de1

বিকল্পভাবে অ্যালেক্সিস সুক্রিহের পার্ল কনসোল অ্যাপ্লিকেশন রয়েছে, তবে আমি এটি ব্যবহার করি নি।


27
আপনি যদি কিছুটা অপ্রয়োজনীয়ভাবে ব্যবহার করতে চান তবে rlwrap যোগ করার জন্য বিবেচনা করুন $ rlwrap perl -d -e 1আপনি ইতিহাস এবং একটি ধারাবাহিক প্রম্পট পাবেন
albfan

control+ Lএই কমান্ড ইন্টারফেসের অধীনে কাজ করে না, আমি কীভাবে স্ক্রিনটি রিফ্রেশ করব?
জেন

1
অন্ধত্বের উপকারের সাথে: জান সেরেনকের উত্তরটি মনে হয় বক্স-এর বাইরে-সর্বাধিক সমাধান প্রদান করে (আপনাকে ইনস্টল করতে হতে পারে rlwrap)। সমস্ত তৃতীয় পক্ষের REPL / কনসোল সমাধানগুলি সহ perlconsoleইনস্টল করা জটিল and এবং প্রায়শই আরও সীমাবদ্ধতা থাকে।
mklement0

3
দুর্ভাগ্যক্রমে, ভেরিয়েবলগুলি perl -de1সমর্থন করে না বলে মনে হয় myএবং হ্যাশগুলি কোনও কারণে কার্যকর হয় না ...
জেরেমিয়া

1
perlconsoleএই সমস্যাগুলিতে ভোগেন না
জেরেমিয়া

60

ম্যাট ট্রাউট কেবল একটি আরইপিএল সম্পর্কে একটি নিবন্ধ লিখেনি, তিনি আসলে একটি লিখেছিলেন - দেভেল :: আরপিএল

আমি এটি কিছুটা ব্যবহার করেছি এবং এটি মোটামুটি ভালভাবে কাজ করে, এবং এটি সক্রিয় বিকাশের অধীনে।

বিটিডাব্লু, কনসোল থেকে যে কেউ "পার্ল-ই" ব্যবহার করার কথা উল্লেখ করেছে তাকে কেউ কেন মডেড করেছে তা আমার ধারণা নেই। এটি সত্যই সত্যই নয়, তবে এটি দুর্দান্তভাবে কার্যকর এবং আমি এটি সর্বদা ব্যবহার করি।


আমি মনে করি এটি অনুমান করা হয়েছিল আমি প্রশ্নটি বুঝতে পারি না। আমার ধারণা আমি এটিকে কিছুটা সম্পাদনা করব। ;-)
জন এরিকসন

২০১৫ সালের মাঝামাঝি: কেবল দৌড়ানো [sudo] cpan Devel::REPLআমার পক্ষে কার্যকর হয়নি, না OSX 10.10 (পার্ল 5.18.2) বা উবুন্টু 14.04 (পার্ল 5.18.2) এ: আমি হারিয়ে যাওয়া মডিউলগুলির অভিযোগের জন্য রানটাইম ত্রুটি পেয়েছি; একটি ইনস্টল করা হয়েছে, তারপরে অন্য নিখোঁজ মডিউলটি প্রতিবেদন করার পরে ছেড়ে দেওয়া হয়েছে।
mklement0

@ mklement0 পূর্বনির্ধারিত মডিউলগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড এবং তৈরি করার জন্য একটি সিপিএন সেটিং রয়েছে। আপনার সেটিংটি চালু করতে হতে পারে। বিকল্পভাবে, শূন্য-কনফিগার সিপেনমিনাস অ্যাপ্লিকেশন একটি ভাল বিকল্প হতে পারে।
স্টারফিশ

@ স্টারফিশ: ধন্যবাদ; ভবিষ্যতের পাঠকদের সময় বাঁচাতে (যেহেতু উত্তরটি ছোট বলে মনে হচ্ছে): আপনি কীভাবে এই সেটিংটি চালু করবেন?
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()//$@'\'। ওএসএক্স ব্যবহারকারীরা এর সাথে হোমব্রিউয়েরrlwrap মাধ্যমে ইনস্টল করতে পারবেন । brew install rlwrap
mklement0

এখানে এমন একটি সংস্করণ যা একটি তালিকা বা কোনও রেফারেন্সের জন্য অভিব্যক্তিটি মূল্যায়নের সময় একটি দুর্দান্ত আউটপুট দেয়:rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
মাইচাউ

21

আমি মনে করি আপনি পার্ল করার জন্য একটি REPL (পড়ুন, মূল্যায়ন, মুদ্রণ, লুপ) ইন্টারফেস সম্পর্কে জিজ্ঞাসা করছেন। এটি করার কয়েকটি উপায় রয়েছে:

  • ম্যাট ট্রাউটের একটি নিবন্ধ রয়েছে যাতে এটি কীভাবে লিখতে হয় তা বর্ণনা করে
  • অ্যাড্রিয়ানো ফেরেরিরা কিছু বিকল্প বর্ণনা করেছেন
  • এবং পরিশেষে, আপনি আইআরসি-র উপর irc.perl.org এ গিয়ে আশা করতে পারেন এবং জনপ্রিয় চ্যানেলগুলির মধ্যে একটিতে বোল বট চেষ্টা করতে পারেন। আপনি তাদের কাছে যে পার্ল করেছেন তা তারা মূল্যায়ন করবে।

1
ম্যাট ট্রাউটের নিবন্ধটি কয়েক বছর আগে থেকে নিচে চলেছে, আপনি এটি এখানে পেতে পারেন: web.archive.org/web/20100212100032/http://chainsawblues.vox.com/…
লিপ

1
: ম্যাট ট্রাউট এখন REPLs একটি অনেক বেশী আপ টু ডেট তালিকা তিনি বিশেষ পরামর্শ দেওয়া হচ্ছে হয়েছে shadow.cat/blog/matt-s-trout/mstpan-17
Davor Cubranic

20

আমি কনসোল হিসাবে কমান্ড লাইনটি ব্যবহার করি:

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

তারপরে আমি পুরানো কমান্ডগুলি ফিরে পেতে আমার বাশ ইতিহাস ব্যবহার করতে পারি । তবে এটি রাষ্ট্র সংরক্ষণ করে না।

আপনি যখন "একটি ছোট জিনিস" পরীক্ষা করতে চান (যেমন পার্ল প্রশ্নের উত্তর দেওয়ার সময়) তখন এই ফর্মটি সবচেয়ে কার্যকর। প্রায়শই, আমি এই কমান্ডগুলি শেল স্ক্রিপ্ট বা মেকফাইলে স্ক্র্যাপড ভারব্যাটিয়াম পেয়েছি get


1
কিছু শাঁস সহ, যেমন fishআপনার এমনকি প্রয়োজনও হয় না \n
ট্রাইসিস

15

পাইথনের মতো নির্মিত পার্লের জন্য ইন্টারেক্টিভ কনসোল নেই। আপনি তবে ডিবাগিং সম্পর্কিত জিনিসগুলি করতে পার্ল ডিবাগারটি ব্যবহার করতে পারেন। আপনি এটি -d বিকল্পের সাহায্যে চালু করুন, তবে আপনি এটি সম্পর্কে জানতে 'ম্যান পার্ল্ডেবাগ' পরীক্ষা করে দেখতে চাইতে পারেন।

কিছুটা গুগল করার পরে, একটি পৃথক প্রকল্প রয়েছে যা পার্ল কনসোল প্রয়োগ করে যা আপনি এটি পেতে পারেন http://www.sukria.net/perlconsole.html

আশাকরি এটা সাহায্য করবে!


আশ্চর্যের যে এই উত্তরটি কোনও অগ্রগতি পায় নি, যদিও এটি গৃহীত উত্তরের চেয়ে আগে ছিল এবং কিছুটা আরও তথ্য সরবরাহ করে। +1
জুন


13

দুটি জনপ্রিয় পার্ল আরপিএল রয়েছে।

  1. ডিভেল :: REPL দুর্দান্ত।
  2. তবে আইএমও উত্তর আরও ভাল।

7
প্রত্যুত্তর সুপারিশ করার জন্য +1। ডিভেল :: REPL এর লেখক নিজেই নিজের সমাধানের উপর জবাব দেওয়ার পরামর্শ দিয়েছিলেন যখন আমি আইআরসি-তে একটি ভাল পার্ল আরপিএল (কনসোল) সম্পর্কে জিজ্ঞাসা করি। জবাব এছাড়াও স্বয়ংক্রিয়-সমাপ্তির সাথে আসে যা কোনও সামগ্রীর উপলব্ধ পদ্ধতি এবং বৈশিষ্ট্যগুলি নিরীক্ষণের জন্য খুব কার্যকর। আমি নিম্নলিখিত কমান্ডের সাহায্যে উবুন্টু তে উত্তর ইনস্টল পারে: sudo apt-get install libreply-perl। তারপরে এটি replyটার্মিনালে কেবল টাইপ করে চালানো যায় ।
Apteryx

আপনি কিভাবে এমডি রান উত্তর ইনস্টল করবেন? মেটাক্পান, না গিথুব পৃষ্ঠা নির্দেশনা সরবরাহ করে না।
ফিলিপ

12

আমি তৈরি করেছি perli, একটি পার্ল REPL যা লিনাক্স, ম্যাকোস এবং উইন্ডোজে চলে

এর ফোকাসটি স্বয়ংক্রিয় ফলাফল মুদ্রণ, সুবিধাজনক ডকুমেন্টেশন লুকআপ এবং নিয়মিত-এক্সপ্রেশন ম্যাচের সহজ পরিদর্শন।
আপনি এখানে স্ক্রিনশট দেখতে পারেন ।

এটি একা একা কাজ করে (পার্ল নিজে ছাড়া অন্য কোনও নির্ভরতা নেই) তবে কমান্ড-লাইন সম্পাদনা, ক্রমাগত কমান্ডের ইতিহাস এবং ট্যাব-সমাপ্তি সমর্থন করার জন্য ইনস্টলেশনটি rlwrapদৃ strongly়ভাবে সুপারিশ করা হয় - এখানে আরও পড়ুন ।

স্থাপন

  • আপনি যদি নোড.জেএস ইনস্টল করে থাকেন:

    npm install -g perli
  • অন্যথায়:

    • ইউনিক্স- মতো প্ল্যাটফর্মগুলি: আপনার স্ক্রিপ্টেরperli পথে কোনও ফোল্ডার হিসাবে এই স্ক্রিপ্টটি ডাউনলোড করুন এবং এটি দিয়ে সম্পাদনযোগ্য করুন chmod +x

    • উইন্ডোজ : আপনার সিস্টেমের পথে কোনও ফোল্ডারে এই স্ক্রিপ্টটিperli.pl ( .plএক্সটেনশনের নোট ) হিসাবে ডাউনলোড করুন ।
      আপনি যদি পেরিলিকে এইভাবে আহ্বান করতে আপত্তি না দেখান তবে আপনি প্রস্তুত perli.pl
      অন্যথায়, নিম্নলিখিত ফন্টে perli.cmdএকই ফোল্ডারে নামের একটি ব্যাচ ফাইল তৈরি করুন : @%~dpn.pl %*; এটি ঠিক যেমন অনুরোধ সক্ষম করে perli


1
আমি পছন্দ করি এটি আরএপিএল perldocথেকে শুরু করতে perliপারে 'someCommand ?'। দেখে মনে হচ্ছে এটি কিছুক্ষণের জন্য আপডেট হয়নি তবে আপনি এখনও পেরিলি বজায় রাখছেন?
sdkks

1
@ এসডাক্কস: যদি আপনার কোনও সমস্যা মনে হয় তবে এটি গিটহাবের প্রতিবেদন করুন এবং আমি এটি সমাধান করার চেষ্টা করব। perliকিছুক্ষণের মধ্যে আপডেট করা হয়নি, কারণ আমার ব্যক্তিগত ব্যবহারে আমি কোনও সমস্যা পাইনি এবং অন্য কয়েকটি লোক এটি ব্যবহার করে বলে মনে হচ্ছে, তবে যতদূর আমি জানি, এটি এখনও বিজ্ঞাপন হিসাবে কাজ করে।
mklement0

7

আমি সবসময় করেছি:

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

10.১০ সহ আমি স্যুইচ করেছি:

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

(rlwrap isচ্ছিক)



6

ডেভেল :: রিপাবলিক থেকে পুনরায়



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, যদি প্লাগিন মাধ্যমে extensibility গুরুত্বপূর্ণ, বা tinyreplথেকে Eval::WithLexicalsএকটি ন্যূনতম খাঁটি-Perl সমাধান readline সমর্থন এবং আভিধানিক অধ্যবসায় অন্তর্ভুক্ত জন্য।


2

আপডেট: আমি তখন থেকে ডাউনলোডযোগ্য আরপিএল তৈরি করেছি - আমার অন্যান্য উত্তর দেখুন

অন্ধত্বের সুবিধার সাথে:

  • তৃতীয় পক্ষের সমাধান বিদ্যমান উত্তর মধ্যে উল্লিখিত পারেন হয় কষ্টকর ইনস্টল করার এবং / অথবা অ তুচ্ছ, অ-সুস্পষ্ট অতিরিক্ত পদক্ষেপ ছাড়া কাজ করে না - কিছু সমাধান বলে মনে অন্তত অর্ধ ছেড়ে দেন।
  • কমান্ড-লাইন-সম্পাদনা কীবোর্ড সমর্থন এবং ইতিহাসের সহায়তার জন্য একটি ব্যবহারযোগ্য আরআরপিএলটির পঠন লাইব্রেরি দরকার - এটি নিশ্চিত করে যে এটি অনেক তৃতীয় পক্ষের সমাধানের জন্য সমস্যাযুক্ত জায়গা।
  • আপনি যদি সিএলআই ইনস্টল করেন rlwrapযা কোনও কমান্ডকে রিডলাইন সমর্থন সরবরাহ করে, আপনি একটি সহজ পার্ল কমান্ডের সাথে একসাথে ব্যবহারযোগ্য আরপিএল তৈরি করতে পারেন এবং তৃতীয় পক্ষের আরপিএল সমাধান ছাড়াই এটি করতে পারেন do
    • উপর ওএসএক্স, আপনি ইনস্টল করতে পারেন rlwrapমাধ্যমে Homebrew সঙ্গে brew install rlwrap
    • লিনাক্স ডিস্ট্রোসকে rlwrapতাদের নিজস্ব প্যাকেজ পরিচালকদের মাধ্যমে দেওয়া উচিত ; উদাহরণস্বরূপ, উবুন্টুতে, ব্যবহার করুন sudo apt-get install rlwrap
    • জান সেরেনেকের উত্তরrlwrap এবং পার্ল কমান্ডের সংমিশ্রনের জন্য দেখুন ।

জনের উত্তর দিয়ে আপনি কী পাবেন না :

  • স্বয়ং-সম্পূর্ণতে
  • মাল্টি-লাইন বিবৃতি প্রবেশ করার ক্ষমতা

একমাত্র তৃতীয় পক্ষের সমাধান যা এইগুলি সরবরাহ করে (অ-তুচ্ছ ইনস্টলেশন + অতিরিক্ত, অ-সুস্পষ্ট পদক্ষেপ সহ), এটি psh , তবে:

  • এটি প্রায় 2.5 বছরে কোনও ক্রিয়াকলাপ দেখেনি

  • তার ফোকাস এটি একটি পূর্ণাঙ্গ হতে করার লক্ষ্যে কাজ করে ভিন্ন শেল প্রতিস্থাপন , এবং এইভাবে একটি ঐতিহ্যগত শেল, যার মানে এটি স্বয়ংক্রিয়ভাবে একটি হিসাবে কমান্ড মূল্যায়ন করে না মত কাজ করে পার্ল বিবৃতি এবং যেমন একটি সুনির্দিষ্ট আউটপুট কমান্ড প্রয়োজন printথেকে একটি এক্সপ্রেশন ফলাফল মুদ্রণ।


জান সেরেনকের উত্তর একরকমভাবে উন্নত করা যেতে পারে:

  • ডিফল্টরূপে এটি অ্যারে / তালিকা / হ্যাশ টেবিলগুলি স্কেলার হিসাবে মুদ্রণ করে, অর্থাত্ কেবলমাত্র তাদের উপাদান গণনা প্রিন্ট করে , তবে পরিবর্তে তাদের উপাদানগুলি গণনা করা সহজ।

আপনি যদি Data::Printerমডিউলটি [sudo] cpan Data::Printerএক-সময়ের অপারেশন হিসাবে ইনস্টল করেন তবে আপনি এটি ফাংশনটি ব্যবহারের জন্য REPL এ লোড করতে পারেন p(), যেখানে আপনি তালিকা / অ্যারে / হ্যাশ টেবিলগুলি গণনার জন্য পাস করতে পারবেন।

এখানে পঠন এবং সমর্থন সহ একটি উপনাম দেওয়া আছেiperlData::Printer , যা আপনি আপনার পসিক্স-এর মতো শেলের প্রারম্ভিকরণ ফাইলটিতে রাখতে পারেন (যেমন, ~/.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

সেপিয়া এবং পিডিইয়ের নিজস্ব আরপিএল রয়েছে (জিএনইউ ইম্যাক্সের জন্য)।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.