Risposte:
Puoi usare il debugger perl su un programma banale, in questo modo:
perl -de1
In alternativa c'è l' applicazione Perl Console di Alexis Sukrieh , ma non l'ho usata.
control
+ L
non funziona con questa interfaccia di comando, come devo aggiornare lo schermo?
rlwrap
). Tutte le soluzioni REPL / console di terze parti, incluso perlconsole
, sono ingombranti da installare e spesso hanno più limitazioni.
perl -de1
non sembra supportare le my
variabili e neanche gli hash funzionano, per qualche motivo ...
perlconsole
non soffre di questi problemi.
Matt Trout non solo ha scritto un articolo su un REPL, ma ne ha anche scritto uno - Develop :: REPL
L'ho usato un po 'e funziona abbastanza bene, ed è in fase di sviluppo attivo.
A proposito, non ho idea del perché qualcuno abbia modificato la persona che ha menzionato l'utilizzo di "perl -e" dalla console. Questo non è davvero un REPL, vero, ma è straordinariamente utile e lo uso sempre.
[sudo] cpan Devel::REPL
non ha funzionato per me, né su OSX 10.10 (Perl 5.18.2) né su Ubuntu 14.04 (Perl 5.18.2): ho errori di runtime che si lamentano dei moduli mancanti; installato uno, quindi ha rinunciato dopo che è stato segnalato un altro modulo mancante.
re.pl
autore, ha scritto un articolo in cui sono elencate diverse alternative, e lui stesso suggerisce di utilizzare reply
invece di re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
Ho scritto uno script che chiamo "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Qualunque cosa tu digiti, valuta in 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
Se vuoi la cronologia, usa rlwrap . Questo potrebbe essere il tuo ~/bin/ips
per esempio:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Ed è così che appare:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Gli utenti OSX possono installare rlwrap
tramite Homebrew con brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Penso che tu stia chiedendo un'interfaccia REPL (Leggi, Valuta, Stampa, Loop) per Perl. Ci sono alcuni modi per farlo:
Uso la riga di comando come console:
$ perl -e 'print "JAPH\n"'
Quindi posso usare la mia cronologia di bash per recuperare vecchi comandi. Ciò non preserva lo stato, tuttavia.
Questo modulo è molto utile quando si desidera testare "una piccola cosa" (come quando si risponde alle domande Perl). Spesso, trovo che questi comandi vengano raschiati alla lettera in uno script di shell o in un makefile.
fish
, non hai nemmeno bisogno di \n
.
Non esiste una console interattiva per Perl come Python. È tuttavia possibile utilizzare il debugger Perl per eseguire operazioni di debug. Lo accendi con l'opzione -d, ma potresti voler controllare 'man perldebug' per saperne di più.
Dopo un po 'di ricerche su Google, c'è un progetto separato che implementa una console Perl che puoi trovare su http://www.sukria.net/perlconsole.html .
Spero che questo ti aiuti!
Puoi sempre semplicemente accedere al debugger integrato ed eseguire i comandi da lì.
perl -d -e 1
Esistono due REPL Perl popolari.
sudo apt-get install libreply-perl
. Quindi può essere eseguito semplicemente digitando reply
un terminale.
Ho creato perli
un REPL Perl che funziona su Linux, macOS e Windows .
Il suo focus è la stampa automatica dei risultati, ricerche documentali convenienti e una facile ispezione delle corrispondenze di espressioni regolari.
Puoi vedere gli screenshot qui .
Funziona da solo (non ha dipendenze diverse dal Perl stesso), ma l' installazione di rlwrap
è fortemente consigliata per supportare la modifica della riga di comando, la cronologia dei comandi persistenti e il completamento delle schede - leggi di più qui .
Installazione
Se hai Node.js installato:
npm install -g perli
Altrimenti:
Piattaforme simili a Unix : scarica questo script come perli
in una cartella nel percorso del tuo sistema e rendilo eseguibile con chmod +x
.
Windows : scarica questo script come perli.pl
(nota l' .pl
estensione) in una cartella nel percorso del tuo sistema.
Se non ti dispiace invocare Perli come perli.pl
, sei pronto.
In caso contrario, creare un file batch denominato perli.cmd
nella stessa cartella con il seguente contenuto @%~dpn.pl %*
:; questo abilita l'invocazione come giusta perli
.
perldoc
da perli
REPL come 'someCommand ?'
. Sembra che non sia stato aggiornato per un po ', stai ancora mantenendo Perli?
perli
non è stato aggiornato da un po ', perché nel mio uso personale non ho riscontrato alcun problema e poche altre persone sembrano usarlo, ma, per quanto ne so, funziona ancora come pubblicizzato.
perl -d
È tuo amico:
% perl -de 0
re.pl di Devel :: REPL
Ciclo di lettura-eval-stampa:
$ perl -e'while(<>){print eval,"\n"}'
Perl non ha una console ma il debugger può essere usato come uno. Al prompt dei comandi, digitare perl -de 1
. (Il valore "1" non ha importanza, è solo un'istruzione valida che non fa nulla.)
Ci sono anche un paio di opzioni per una shell Perl .
Per maggiori informazioni leggi perlfaq3 .
Puoi consultare psh qui: http://gnp.github.io/psh/
È una shell completa (puoi usarla in sostituzione di bash per esempio), ma usa la sintassi perl .. in modo da poter creare metodi al volo ecc.
La panoramica di Matt Trout elenca cinque scelte, da in perl -de 0
poi, e raccomanda Reply
, se è importante l'estensibilità tramite plug-in, o tinyrepl
da Eval::WithLexicals
, per una soluzione minima, perl puro che includa il supporto readline e la persistenza lessicale.
Aggiornamento: da allora ho creato un REPL scaricabile - vedi la mia altra risposta .
Con il senno di poi:
rlwrap
, che fornisce supporto readline a qualsiasi comando, è possibile combinarlo con un semplice comando Perl per creare un REPL utilizzabile e quindi fare a meno di soluzioni REPL di terze parti.
rlwrap
tramite Homebrew conbrew install rlwrap
.rlwrap
tramite i rispettivi gestori di pacchetti; ad esempio, su Ubuntu, utilizzare sudo apt-get install rlwrap
.rlwrap
e un comando Perl.Quello che NON ottieni dalla risposta di Ján:
L'unica soluzione di terze parti che offre questi (con installazione non banale + passaggi aggiuntivi, non ovvi), è psh , ma:
non ha visto attività da circa 2,5 anni
il suo obiettivo è diverso in quanto mira ad essere una vera e propria shell sostituzione , e pertanto funziona come un guscio tradizionale, il che significa che non valuta automaticamente un comando come Perl dichiarazione, e richiede un esplicito comando di output come print
da stampa il risultato di un'espressione.
La risposta di Ján Sáreník può essere migliorata in un modo:
Se si installa il Data::Printer
modulo con [sudo] cpan Data::Printer
un'unica operazione, è possibile caricarlo nel REPL per l'uso della p()
funzione, a cui è possibile passare elenchi / matrici / hashtable per l'enumerazione.
Ecco un alias chiamato iperl
con readline e Data::Printer
supporto , che puoi inserire nel file di inizializzazione della shell simile a POSIX (ad es. ~/.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()//$@'\'
Ad esempio, è possibile eseguire le seguenti operazioni per stampare tutte le variabili di ambiente tramite la tabella hash %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Come per la risposta di Ján, il risultato scalare di un'espressione viene automaticamente stampato; per esempio:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Cerca anche ptkdb su CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia e PDE hanno anche REPL propri (per GNU Emacs).
Vedi anche Stylish REPL (per GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Puoi farlo online (come molte cose nella vita) qui:
$ rlwrap perl -d -e 1
Avresti la cronologia e un prompt coerente