Jak mogę uruchomić interaktywną konsolę dla Perla?
Jak mogę uruchomić interaktywną konsolę dla Perla, podobną do komendy irb
dla Rubiego lub python
dla Pythona?
22 answers
Możesz użyć debuggera Perla w trywialnym programie, tak:
perl -de1
Alternatywnie jest Alexis Sukrieh 'S Perl Console aplikacja, ale nie używałem go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-08 22:13:39
Matt Trout nie tylko napisał artykuł o REPL, ale także napisał jeden - Devel:: REPL
Używałem go trochę i działa dość dobrze, i jest w trakcie aktywnego rozwoju.
BTW, nie mam pojęcia dlaczego ktoś modyfikował osobę, która wspomniała o użyciu "perl-e" z konsoli. To nie jest naprawdę REPL, prawda, ale jest fantastycznie przydatne, i używam go cały czas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 16:16:11
Napisałem skrypt, który nazywam "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Cokolwiek wpiszesz, ewaluuje w Perlu:
> 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 19:44:29
Używam wiersza poleceń jako konsoli:
$ perl -e 'print "JAPH\n"'
Wtedy mogę użyć mojej historii bash, aby odzyskać stare polecenia. To jednak nie zachowuje stanu.
Ten formularz jest najbardziej przydatny, gdy chcesz przetestować " jedną małą rzecz "(np. odpowiadając na pytania Perla). Często stwierdzam, że te polecenia są zeskrobywane dosłownie do skryptu powłoki lub pliku makefile.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 17:59:11
Myślę, że pytasz o interfejs REPL (Read, Evaluate, Print, Loop) do Perla. Jest na to kilka sposobów:
- Matt Trout ma Artykuł , który opisuje, jak napisać jeden
- Adriano Ferreira opisał kilka opcji
- i wreszcie można wskoczyć na IRC na irc.perl.org i wypróbuj jeden z botów eval w wielu popularnych kanałach. Będą oceniać kawałki Perla, które im przekazujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-14 13:45:33
Jeśli chcesz historii, użyj rlwrap . To może być Twoje ~/bin/ips
na przykład:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
I tak to wygląda:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 14:07:39
Nie ma interaktywnej konsoli dla Perla zbudowanej tak, jak robi to Python. Można jednak użyć debuggera Perla do debugowania powiązanych rzeczy. Włączasz go za pomocą opcji-d, ale możesz chcieć sprawdzić 'man perldebug', aby się o tym dowiedzieć.
Po odrobinie googlowania istnieje osobny projekt, który implementuje konsolę Perla, którą można znaleźć na http://www.sukria.net/perlconsole.html .
Mam nadzieję, że to pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-09 01:32:06
Zawsze możesz po prostu wpaść do wbudowanego debuggera i uruchomić stamtąd polecenia.
perl -d -e 1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:37:59
Istnieją dwie popularne repliki Perla.
1. Devel:: REPL jest świetny.
2. Ale IMO Odpowiedz jest lepsza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-06 18:49:29
I ' ve created perli
, a PERL REPL , który działa na Linux, OS X i Windows .
Jego głównym celem jest automatyczne drukowanie wyników, wygodne wyszukiwanie dokumentacji i łatwe
kontrola zgodności wyrażeń regularnych.
Możesz zobaczyć zrzuty ekranu tutaj .
Działa autonomicznie (nie ma innych zależności niż sam Perl), ale instalacja rlwrap
jest zalecane , aby wspierać wiersz poleceń edycja, trwała historia poleceń i uzupełnianie zakładek-przeczytaj więcej tutaj .
Instalacja
-
Jeśli zdarzy ci się mieć węzeł.zainstalowane js:
npm install -g perli
-
Inaczej:
Unix-podobne platformy: Pobierz ten skrypt jako
perli
do folderu w ścieżce systemu i wykonywalny za pomocąchmod +x
.Windows : Pobierz ten skrypt jako
perli.pl
(zwróć uwagę na rozszerzenie.pl
) do folderu w ścieżce systemu.
Jeśli nie masz nic przeciwko powołaniu Perli jakoperli.pl
, jesteś gotowy.
W przeciwnym razie Utwórz plik wsadowy o nazwieperli.cmd
w tym samym folderze o następującej zawartości:@%~dpn.pl %*
; umożliwia to wywołanie jako tylkoperli
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 14:22:40
perl -d
jest twoim przyjacielem:
% perl -de 0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:37:37
Re.pl from Devel:: REPL
Zawsze tak było:
perl -wlne'eval;print$@if$@'
Z 5.10 przesiadłem się na:
perl -wnE'say eval()//$@'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 10:48:08
Perl nie ma konsoli, ale debugger może być używany jako jeden. W wierszu polecenia wpisz perl -de 1
. (Wartość "1" nie ma znaczenia, to tylko poprawne stwierdzenie, które nic nie robi.)
Istnieje również kilka opcji dla powłoki Perla .
Aby uzyskać więcej informacji, przeczytaj perlfaq3 .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:46:40
Read-eval-Print loop:
$ perl -e'while(<>){print eval,"\n"}'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-17 07:28:32
Możesz zajrzeć do psh tutaj: http://gnp.github.io/psh/
Jest to pełna powłoka (możesz jej użyć w zastępstwie Basha na przykład), ale używa składni Perla.. możesz więc tworzyć metody w locie itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-07 17:03:42
Update: od tego czasu stworzyłem REPL do pobrania-zobacz moja inna odpowiedź .
Z korzyścią z perspektywy czasu:
- rozwiązania stron trzecich wymienione wśród istniejących odpowiedzi są albo kłopotliwe w instalacji i/lub nie działają bez nietrywialnych, nieoczywistych dodatkowych kroków-niektóre rozwiązania wydają się być co najmniej w połowie porzucone.
- użyteczny REPL wymaga biblioteki readline do edycji wiersza poleceń Obsługa klawiatury i obsługa historii - zapewnienie, że jest to problem dla wielu rozwiązań innych firm.
- Jeśli zainstalujesz CLI
rlwrap
, dzięki temu można połączyć je z prostym poleceniem Perla, aby utworzyć użyteczny REPL, a tym samym poradzić sobie bez zewnętrznych rozwiązań REPL.- na OSX, możesz zainstalować
rlwrap
poprzez Homebrew zbrew install rlwrap
. - dystrybucje Linuksa powinny oferować
rlwrap
poprzez odpowiednie Menedżery pakietów; np. na Ubuntu użyjsudo apt-get install rlwrap
. - Zobacz odpowiedź Jána Sáreníka dla wspomnianej kombinacji
rlwrap
i polecenia Perla.
- na OSX, możesz zainstalować
Czego nie dostajesz z odpowiedzią Jána:
- automatyczne uzupełnianie
- możliwość wprowadzania poleceń wielowierszowych
Jedynym rozwiązaniem firm trzecich, które je oferuje (z nietrywialną instalacją + dodatkowymi, nieoczywistymi krokami), jest psh , ale:
-
Nie ma aktywności od około 2,5 roku
Jego skupienie jest inne, ponieważ ma być pełnowartościowym zastąpieniem powłoki , a zatem działa jak tradycyjna powłoka, co oznacza, że nie ocenia automatycznie polecenia jako instrukcji Perl i wymaga jawnego polecenia wyjściowego, takiego jak
print
, aby wydrukować wynik wyrażenia.
Odpowiedź Jána Sáreníka można poprawić w jeden sposób:
- Domyślnie, to drukuje tablice / listy / Hashtable jako Skalary , np. wypisuje tylko liczbę elementów , podczas gdy wskazane byłoby wyliczenie ich elementów.
Jeśli zainstalujesz Data::Printer
moduł z [sudo] cpan Data::Printer
jako jednorazową operacją, można go załadować do REPL w celu użycia p()
funkcja, do której możesz przekazać listy/tablice/Hashtable do wyliczenia.
Oto alias o nazwie iperl
z obsługą readline i Data::Printer
, który można umieścić w pliku inicjalizacyjnym powłoki podobnej do POSIX (np., ~/.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()//$@'\'
Można np. wykonać następujące czynności, aby wydrukować wszystkie zmienne środowiskowe za pomocą hashtable %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Tak jak w odpowiedzi Jána, Skalar wynik wyrażenia jestautomatycznie drukowany; np.:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:42
Pod Debianem / Ubuntu:
$ sudo apt-get install libdevel-repl-perl
$ re.pl
$ sudo apt-get install libapp-repl-perl
$ iperl
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-05 14:56:12
Przegląd Matta Trouta wymienia pięć opcji, począwszy od perl -de 0
, i zaleca Reply
, jeśli rozszerzalność za pomocą wtyczek jest ważna, lub tinyrepl
z Eval::WithLexicals
, dla minimalnego, czystego Perla, który obejmuje obsługę readline i trwałość leksykalną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-31 17:11:28
Poszukaj też ptkdb na CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:53:20
Sepia i PDE mają również własne repliki (dla GNU Emacs).
Zobacz także stylowy REPL (dla GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod