Odpowiedzi:
Możesz użyć debugera Perla w trywialnym programie, na przykład:
perl -de1
Alternatywnie jest aplikacja Perla na konsoli Alexis Sukrieh , ale jej nie używałem.
control
+ L
nie działa w tym interfejsie poleceń, jak powinienem odświeżyć ekran?
rlwrap
). Wszystkie rozwiązania REPL / konsoli innych firm, w tym perlconsole
, są kłopotliwe w instalacji i często mają więcej ograniczeń.
perl -de1
nie wydaje się wsparcia my
zmiennych i skróty nie działają albo z jakiegoś powodu ...
perlconsole
nie cierpi z powodu tych problemów.
Matt Trout nie tylko napisał artykuł o REPL, ale napisał jeden - Devel :: REPL
Użyłem go trochę i działa dość dobrze i jest w trakcie aktywnego rozwoju.
BTW, nie mam pojęcia, dlaczego ktoś zmodyfikował osobę, która wspomniała o użyciu „perl -e” z konsoli. To nie jest tak naprawdę REPL, prawda, ale jest fantastycznie przydatne i używam go cały czas.
[sudo] cpan Devel::REPL
nie działało dla mnie, ani na OSX 10.10 (Perl 5.18.2), ani na Ubuntu 14.04 (Perl 5.18.2): dostaję błędy w czasie wykonywania narzekające na brakujące moduły; zainstalowałem jeden, a potem zrezygnowałem po zgłoszeniu kolejnego brakującego modułu.
re.pl
autor Matt Trout napisał artykuł wymieniający kilka alternatyw, a on sam sugeruje użycie reply
zamiast re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
Napisałem skrypt, który nazywam „psh”:
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Cokolwiek wpiszesz, ocenia 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
Jeśli chcesz historii, użyj rlwrap . Może to być ~/bin/ips
na przykład Twój :
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
A tak to wygląda:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Użytkowników OSX można zainstalować rlwrap
poprzez Homebrew z brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Myślę, że pytasz o interfejs REPL (odczyt, ocena, drukowanie, pętla) dla perla. Można to zrobić na kilka sposobów:
Używam wiersza polecenia jako konsoli:
$ perl -e 'print "JAPH\n"'
Następnie mogę użyć mojej historii bashów, aby odzyskać stare polecenia. To jednak nie zachowuje stanu.
Ten formularz jest najbardziej przydatny, gdy chcesz przetestować „jedną małą rzecz” (na przykład odpowiadając na pytania Perla). Często okazuje się, że polecenia te są dosłownie zdrapywane do skryptu powłoki lub makefile.
fish
nawet nie potrzebujesz \n
.
Nie ma wbudowanej interaktywnej konsoli dla Perla, tak jak Python. Możesz jednak użyć Debugera Perla do debugowania powiązanych rzeczy. Włączasz ją z opcją -d, ale możesz chcieć sprawdzić „man perldebug”, aby się o tym dowiedzieć.
Po trochę googlingu, istnieje oddzielny projekt, który implementuje konsolę Perl, którą można znaleźć na http://www.sukria.net/perlconsole.html .
Mam nadzieję że to pomoże!
Zawsze możesz po prostu wpaść do wbudowanego debuggera i uruchomić z niego polecenia.
perl -d -e 1
Istnieją dwa popularne Perl REPL.
sudo apt-get install libreply-perl
. Następnie można go uruchomić, wpisując reply
terminal.
Stworzyłem perli
, Perl REPL, który działa w systemie Linux, macOS i Windows .
Koncentruje się na automatycznym drukowaniu wyników, wygodnym wyszukiwaniu dokumentacji i łatwej kontroli dopasowań wyrażeń regularnych.
Można zobaczyć zdjęcia tutaj .
Działa autonomicznie (nie ma żadnych innych zależności niż sam Perl), ale zdecydowanie zaleca się instalację,rlwrap
aby wesprzeć edycję wiersza poleceń, trwałą historię poleceń i uzupełnianie tabulatorów - czytaj więcej tutaj .
Instalacja
Jeśli akurat masz zainstalowany Node.js:
npm install -g perli
Inaczej:
Unix -jak platformach: Pobierz ten skrypt jako perli
do folderu w ścieżce systemu i uczynić go wykonywalnym z chmod +x
.
Windows : Pobierz ten skrypt jako perli.pl
(zwróć uwagę na .pl
rozszerzenie) do folderu na ścieżce systemu.
Jeśli nie masz nic przeciwko inwokowaniu Perli jako perli.pl
, wszystko jest gotowe.
W przeciwnym razie utwórz plik wsadowy o nazwie perli.cmd
w tym samym folderze o następującej treści @%~dpn.pl %*
:; umożliwia to wywołanie jako słuszne perli
.
perldoc
z perli
REPL jak 'someCommand ?'
. Wygląda na to, że od jakiegoś czasu nie był aktualizowany, czy nadal utrzymujesz Perli?
perli
od jakiegoś czasu nie był aktualizowany, ponieważ do mojego osobistego użytku nie natknąłem się na żadne problemy i wydaje się, że niewiele osób go używa, ale o ile wiem, nadal działa tak, jak reklamowano.
perl -d
jest twoim przyjacielem:
% perl -de 0
re.pl z Devel :: REPL
Pętla do odczytu-odczytu-ewaluacji:
$ perl -e'while(<>){print eval,"\n"}'
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 prawidłowe stwierdzenie, które nic nie robi.)
Istnieje również kilka opcji dla powłoki Perla .
Aby uzyskać więcej informacji, przeczytaj perlfaq3 .
Możesz zajrzeć do psh tutaj: http://gnp.github.io/psh/
Jest pełny w powłoce (możesz go użyć na przykład zamiast basha), ale używa składni perla .. więc możesz tworzyć metody w locie itp.
Przegląd Matta Trouta wymienia pięć opcji, perl -de 0
począwszy od tego , i zaleca Reply
, jeśli rozszerzalność za pomocą wtyczek jest ważna, lub tinyrepl
od Eval::WithLexicals
, dla minimalnego, czysto perlowego rozwiązania, które obejmuje wsparcie readline i trwałość leksykalną.
Aktualizacja: Od tego czasu stworzyłem REPL do pobrania - patrz moja inna odpowiedź .
Z perspektywy czasu:
rlwrap
, który zapewnia obsługę readline dla dowolnej komendy, możesz połączyć ją z prostą komendą Perla, aby utworzyć użyteczną REPL , a tym samym zrezygnować z rozwiązań REPL innych firm.
rlwrap
poprzez Homebrew z brew install rlwrap
.rlwrap
za pośrednictwem odpowiednich menedżerów pakietów; np. na Ubuntu, użyj sudo apt-get install rlwrap
.rlwrap
polecenia Perl.Czego NIE otrzymujesz z odpowiedzią Jána:
Jedynym rozwiązaniem oferowanym przez inne firmy (z nietrywialną instalacją + dodatkowymi, nieoczywistymi krokami) jest psh , ale:
nie widziała aktywności od około 2,5 roku
Skupia różni się tym, że ma być pełnoprawnym wymiana powłoki , a tym samym działa jak tradycyjny skorupy, co oznacza, że nie automatycznie ocenić polecenia jako Perl rachunku i wymaga wyraźnej komendy wyjściowe, takie jak print
na wypisz wynik wyrażenia.
Odpowiedź Jána Sáreníka można poprawić w jeden sposób:
Jeśli Data::Printer
moduł zostanie zainstalowany [sudo] cpan Data::Printer
jako jednorazowa operacja, można załadować go do REPL w celu użycia p()
funkcji, do której można przekazać listy / tablice / tablice skrótów do wyliczenia.
Oto alias o nazwie iperl
readline i Data::Printer
wsparciu , który możesz umieścić w pliku inicjującym powłoki podobnym 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()//$@'\'
Na przykład możesz wykonać następujące czynności, aby wydrukować wszystkie zmienne środowiskowe za pomocą tablicy hashtable %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Podobnie jak w przypadku odpowiedzi Jána, skalarny wynik wyrażenia jest automatycznie drukowany; na przykład:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Poszukaj również ptkdb w CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia i PDE mają również własne REPL (dla GNU Emacs).
Zobacz także Stylowy REPL (dla GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Możesz to zrobić online (jak wiele rzeczy w życiu) tutaj:
$ rlwrap perl -d -e 1
Otrzymasz historię i spójny monit