Kaip paleisti „Perl“ interaktyvią konsolę?

Kaip paleisti „Perl“ interaktyviąją konsolę, panašią į „ irb ar „Python“ irb „Irb“?

236
16 сент. nustatė „ ibz “ 16 sep . 2008-09-16 18:35 '08, 18:35, 2008-09-16 18:35
@ 22 atsakymai

Perl debugger galite naudoti trivialioje programoje, pavyzdžiui:

 perl -de1 

Arba yra „Alexis Sukrieh Perl“ konsolės programa , bet aš jo nenaudojau.

266
16 сент. Danielio Papazijos atsakymas rugsėjo 16 d 2008-09-16 18:38 '08, 18:38, 2008-09-16 18:38

Matt Troutas ne tik parašė straipsnį apie REPL, bet ir parašė vieną - Devel :: REPL

Aš jį truputį naudoju ir jis veikia gana gerai, ir jis aktyviai vystosi.

border=0

Beje, aš nežinau, kodėl kažkas pakeitė asmenį, kuris paminėjo „perl-e“ naudojimą iš konsolės. Tai tikrai nėra REPL, bet tai yra fantastiškai naudinga, ir aš jį visą laiką naudoju.

58
16 сент. Dave Rolsky atsakymas rugsėjo 16 d 2008-09-16 19:16 '08 at 7:16 pm 2008-09-16 19:16

Aš parašiau scenarijų, kurį vadinu „psh“:

 #! /usr/bin/perl while (<>) { chomp; my $result = eval; print "$_ = $result\n"; } 

Nepriklausomai nuo to, ką įvedate, jis įvertintas Perl:

 > 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 
34
16 сент. atsakymą pateikė raldi 16 sep . 2008-09-16 22:44 '08, 10:44 val. 2008-09-16 22:44

Jei norite istorijos, naudokite rlwrap . Tai gali būti jūsų ~/bin/ips , pavyzdžiui:

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

Ir tai atrodo taip:

 $ ips This is Interactive Perl shell perl> 2**128 3.40282366920938e+38 perl> 
19
03 апр. Atsakymą pateikė Ján Sáreník 03 Bal. 2014-04-03 17:07 '14 at 17:07 2014-04-03 17:07

Naudoju komandinę eilutę kaip konsolę:

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

Tada galiu naudoti „bash“ istoriją, jei norite grąžinti senas komandas. Tačiau ji neišsaugo būsenos.

Ši forma yra naudingiausia, kai norite išbandyti „vieną mažą dalyką“ (pavyzdžiui, atsakydami į „Perl“ klausimus). Dažnai manau, kad šios komandos tiesiog įkelia į scenarijaus arba „makefile“ korpusą.

19
16 сент. Atsakymas, kurį pateikė Jon Ericson Sep 16 2008-09-16 18:42 '08 18:42 2008-09-16 18:42

Manau, jūs klausiate apie REPL sąsają (skaityti, įvertinti, spausdinti, kilti) perl. Yra keletas būdų tai padaryti:

  • Matt Trout straipsnis, kuriame aprašoma, kaip rašyti
  • Adriano Ferreira aprašė kai kuriuos parametrus.
  • ir galiausiai, galite peršokti į IRC irc.perl.org ir išbandyti vieną iš evalinių dievų daugelyje populiarių kanalų. Jie įvertins perl fragmentus, kuriuos jums perduosite.
19
16 сент. Atsakymas yra suteiktas amoore 16 sep . 2008-09-16 18:57 '08, 18:57, 2008-09-16 18:57

„Perl“ pastatytas kaip „Python“ nėra interaktyvios konsolės. Tačiau galite naudoti „Perl Debugger“, kad derintumėte susijusius dalykus. Jį įtraukiate į „-d“ parinktį, tačiau galite sužinoti „žmogus perldebug“, kad sužinotumėte apie tai.

Po kelių paieškos užklausų yra atskiras projektas, įgyvendinantis „Perl“ konsolę, kurią galite rasti http://www.sukria.net/perlconsole.html .

Tikiuosi, kad tai padės!

15
16 сент. Atsakymą pateikė Frank Wiles rugsėjo 16 d 2008-09-16 18:38 '08, 18:38, 2008-09-16 18:38

Jūs visada galite eiti į įmontuotą debugger ir paleisti komandas iš ten.

  perl -d -e 1 
14
16 сент. Atsakymą pateikė Clinton Pierce , rugsėjo 16 d. 2008-09-16 18:37 '08 at 18:37 pm 2008-09-16 18:37

Yra du populiarūs „Perl repl“.
1. Devel :: REPL yra puikus.
2. Tačiau IMO atsakymas yra geresnis.

11
06 февр. Atsakymą pateikė Eric Johnson, vasario 6 d. 2015-02-06 21:49 '15 - 21:49 2015-02-06 21:49

Aš sukūriau Perli, Perl REPL, kuris veikia Linux, MacOS ir Windows .

Jame pagrindinis dėmesys skiriamas automatiniam rezultatų spausdinimui, lengvam dokumentų ieškojimui ir paprastam reguliarių išraiškų atitikmenų tikrinimui.
Čia galite pamatyti ekrano kopijas.

Jis veikia savarankiškai (neturi jokių kitų priklausomybių nei pats Perl), tačiau primygtinai rekomenduojama įdiegti rlwrap kad palaikytumėte komandų eilutės redagavimą, pastovią komandų istoriją ir skirtukų užbaigimą - daugiau informacijos rasite čia .

Asamblėja

  • Jei turite įdiegtą „Node.js“:

     npm install -g perli 
  • Priešingu atveju:

    • Unix tipo platformos: Atsisiųskite šį scenarijų kaip perli į sistemos kelio aplanką ir padarykite jį vykdomu naudodami chmod +x .

    • „Windows“: atsisiųskite šį scenarijų kaip perli.pl (pažymėkite .pl plėtinį) aplanke sistemos kataloge.
      Jei nenorite, kad skambint perli.pl kaip perli.pl , viskas yra paruošta.
      Priešingu atveju tame pačiame aplanke sukurkite paketinį failą, pavadintą perli.cmd su tokiu turiniu: @%~dpn.pl %* ; Tai leidžia jums skambinti, kai tik perli .

10
26 сент. atsakymas pateikiamas mklement0 26 sep . 2015-09-26 17:01 '15, 17:01, 2015-09-26 17:01

perl -d yra jūsų draugas:

 % perl -de 0 
6
16 сент. Brian Phillips atsakymas, pateiktas rugsėjo 16 d 2008-09-16 18:37 '08 at 18:37 pm 2008-09-16 18:37

re.pl iš Devel :: REPL

6
17 сент. Johny Sep 17 atsakymas 2008-09-17 10:45 '08, 10:45 val. 2008-09-17 10:45

Skaityti ciklo eval-print:

 $ perl -e'while(<>){print eval,"\n"}' 
5
17 сент. Atsakymą pateikė KIM Taegyoon 17 sep . 2013-09-17 10:28 '13, 10:28 2013-09-17 10:28

Aš visada:

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

Nuo 5.10 perjungiau į:

 perl -wnE'say eval()//$@' 
5
18 сент. atsakymas duotas 18- ųjų sekundžių . 2008-09-18 13:48 '08, 13:48 2008-09-18 13:48

Perl neturi konsolės, bet debugger gali būti naudojamas kaip vienas. Į komandų eilutę įrašykite perl -de 1 . (Reikšmė "1" nesvarbu, tai tik galiojantis pareiškimas, kuris nieko nedaro.)

Taip pat yra keletas Perl apvalkalo variantų.

Daugiau informacijos rasite perlfaq3 .

4
16 сент. Michael Carman atsakymas rugsėjo 16 d 2008-09-16 18:46 '08 at 18:46 pm 2008-09-16 18:46

Čia galite pamatyti psh: http://gnp.github.io/psh/

Tai yra pilnas apvalkalas (galite jį naudoti vietoj „bash“), tačiau jis naudoja perl sintaksę.

3
16 сент. Atsakymas suteiktas šeštadienį 16 rugsėjo. 2008-09-16 18:44 '08 at 18:44 2008-09-16 18:44

Debian / Ubuntu:

 $ sudo apt-get install libdevel-repl-perl $ re.pl $ sudo apt-get install libapp-repl-perl $ iperl 
2
05 марта '16 в 17:56 2016-03-05 17:56 atsakymas duotas gavenkoa Kovo 05 '16, 17:56 2016-03-05 17:56

Atnaujinimas: nuo tada sukūriau įkraunamą REPL - žr. Mano kitą atsakymą .

Atsižvelgiant į retrospektyvą:

  • trečiųjų šalių sprendimai, paminėti tarp esamų atsakymų, yra sudėtingi įdiegti ir (arba) neveikti be netradicinių, neaiškių papildomų veiksmų - kai kurie sprendimai atrodo bent pusiau atsisakyta.
  • Naudotam REPL reikia klaviatūros palaikymo ir klaviatūros palaikymo ir istorijos palaikymo skaitymo programos . Tai reiškia, kad tai yra daugelio trečiųjų šalių sprendimų problema.
  • Jei įdiegiate CLI rlwrap , kuris teikia readline paramą bet kuriai komandai, galite sujungti ją su paprasta Perl komanda, kad sukurtumėte naudingą REPL ir, be to, be trečiosios šalies REPL sprendimo.
    • OSX sistemoje galite įdiegti „ rlwrap per „ Homebrew“, naudodami brew install rlwrap .
    • „Linux“ platinimas turėtų pasiūlyti „ rlwrap per savo atitinkamus paketų valdytojus; pavyzdžiui, „Ubuntu“ naudokite sudo apt-get install rlwrap .
    • Žr. Ján Sáreník atsakymą dėl „ rlwrap derinio ir „Perl“ komandos.

Ką nesate su atsakymu Ján:

  • automatiškai užbaigti
  • galimybė patekti į daugiašales operatorius

Vienintelis trečiosios šalies sprendimas, kuris siūlo juos (su ne trivialus diegimas ir papildomi, ne akivaizdūs veiksmai), psh , bet:

  • jis nematė veiklos po maždaug 2,5 metų

  • jos dėmesys skiriasi tuo, kad juo siekiama visiško apvalkalo pakeitimo ir tokiu būdu veikia kaip tradicinis apvalkalas, o tai reiškia, kad ji automatiškai neišnagrinėja komandos kaip „Perl“ operatoriaus ir reikalauja aiškios išvesties komandos, pvz.


Ján Sáreník atsakymą galima pagerinti vienu būdu:

  • Pagal numatytuosius nustatymus ji spausdina masyvų / sąrašų / maišos lenteles kaip skalarus , t.y. spausdina tik jų elementų skaičių, o būtų patogu išvardyti jų elementus.

Jei įdiegsite „ Data::Printer modulį su [sudo] cpan Data::Printer kaip vienkartine operacija, galite ją įkelti į REPL, kad galėtumėte naudoti p() funkciją , į kurią galite perkelti sąrašus / masyvus / maišos lenteles.

Čia yra slapyvardis, pavadintas „ iperl su „readline“ ir „ Data::Printer palaikymu , kurį galite įdėti į savo POSIX apvalkalo iniciacijos failą (pvz., ~/.bashrc ):

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

Pvz., Galite atlikti šiuos veiksmus, jei norite spausdinti visus aplinkos kintamuosius naudodami %ENV :

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

Kaip ir Ján atsakyme, išraiška automatiškai spausdinama išraiška; pavyzdžiui:

 iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714 
2
08 июля '15 в 6:55 2015-07-08 06:55 atsakymas duotas mklementas0 liepos 08-15 , 6:55 2015-07-08 06:55

„Matt Trout“ apžvalgoje yra penkios parinktys: iš perl -de 0 ir tolesnio Reply jei išplėtimas per įskiepius, arba tinyreplEval::WithLexicals , yra Eval::WithLexicals minimaliam, gryno perl sprendimui, apimančiam readline palaikymą ir leksinę atkaklumą.

1
31 мая '16 в 20:11 2016-05-31 20:11 atsakymą pateikė Davor Cubranic gegužės 16 d. 16 val. 20:11 2016-05-31 20:11

Taip pat žr. Ptkdb apie CPAN: http://search.cpan.org/search?query=ptkdb>

16 сент. atsakymas įteiktas paleisti 16 rugsėjis 2008-09-16 18:53 '08, 18:53, 2008-09-16 18:53

Taip pat žiūrėkite Stylish REPL (GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod

0
18 сент. Johny Sep 18 atsakymas 2008-09-18 08:54 '08 8:54 val. 2008-09-18 08:54

Sepia ir PDE taip pat turi savo REPL (GNU Emacs).

0
17 сент. Johny Sep 17 atsakymas 2008-09-17 10:47 '08 at 10:47 2008-09-17 10:47