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+ Lnie 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 -de1nie wydaje się wsparcia myzmiennych i skróty nie działają albo z jakiegoś powodu ...
perlconsolenie 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::REPLnie 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.plautor Matt Trout napisał artykuł wymieniający kilka alternatyw, a on sam sugeruje użycie replyzamiast 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/ipsna 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ć rlwrappoprzez 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.
fishnawet 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 replyterminal.
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 perliInaczej:
Unix -jak platformach: Pobierz ten skrypt jako perlido folderu w ścieżce systemu i uczynić go wykonywalnym z chmod +x.
Windows : Pobierz ten skrypt jako perli.pl(zwróć uwagę na .plrozszerzenie) 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.cmdw tym samym folderze o następującej treści @%~dpn.pl %*:; umożliwia to wywołanie jako słuszne perli.
perldocz perliREPL jak 'someCommand ?'. Wygląda na to, że od jakiegoś czasu nie był aktualizowany, czy nadal utrzymujesz Perli?
perliod 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 0począwszy od tego , i zaleca Reply, jeśli rozszerzalność za pomocą wtyczek jest ważna, lub tinyreplod 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.
rlwrappoprzez Homebrew z brew install rlwrap.rlwrapza pośrednictwem odpowiednich menedżerów pakietów; np. na Ubuntu, użyj sudo apt-get install rlwrap.rlwrappolecenia 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 printna wypisz wynik wyrażenia.
Odpowiedź Jána Sáreníka można poprawić w jeden sposób:
Jeśli Data::Printermoduł zostanie zainstalowany [sudo] cpan Data::Printerjako 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 iperlreadline i Data::Printerwsparciu , 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 1Otrzymasz historię i spójny monit