Respuestas:
Puede usar el depurador perl en un programa trivial, de esta manera:
perl -de1
Alternativamente, está la aplicación Perl Console de Alexis Sukrieh , pero no la he usado.
control
+ L
no funciona bajo esta interfaz de comando, ¿cómo debo actualizar la pantalla?
rlwrap
). Todas las soluciones de REPL / consola de terceros, incluidas perlconsole
, son difíciles de instalar y a menudo tienen más limitaciones.
perl -de1
no parece admitir my
variables, y los hash tampoco funcionan, por alguna razón ...
perlconsole
no sufre de estos problemas.
Matt Trout no solo escribió un artículo sobre un REPL, sino que también escribió uno - Devel :: REPL
Lo he usado un poco y funciona bastante bien, y está en desarrollo activo.
Por cierto, no tengo idea de por qué alguien modificó a la persona que mencionó el uso de "perl -e" de la consola. Esto no es realmente un REPL, cierto, pero es fantásticamente útil, y lo uso todo el tiempo.
[sudo] cpan Devel::REPL
no funcionó para mí, ni en OSX 10.10 (Perl 5.18.2) ni en Ubuntu 14.04 (Perl 5.18.2): recibo errores de tiempo de ejecución quejándose de módulos faltantes; instaló uno, luego se dio por vencido después de que se informó de otro módulo faltante.
re.pl
autor, escribió un artículo que enumera varias alternativas, y él mismo sugiere usar en reply
lugar de re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
Escribí un script que llamo "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Cualquier cosa que escriba, se evalúa en 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
Si quieres historia, usa rlwrap . Este podría ser tu ~/bin/ips
por ejemplo:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Y así es como se ve:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Los usuarios de OSX pueden instalar a rlwrap
través de Homebrew con brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Creo que está preguntando acerca de una interfaz REPL (Leer, Evaluar, Imprimir, Bucle) para perl. Hay algunas formas de hacer esto:
Yo uso la línea de comando como consola:
$ perl -e 'print "JAPH\n"'
Entonces puedo usar mi historial de bash para recuperar comandos antiguos. Sin embargo, esto no preserva el estado.
Este formulario es más útil cuando desea evaluar "una pequeña cosa" (como cuando responde preguntas de Perl). A menudo, encuentro que estos comandos se raspan literalmente en un script de shell o un archivo MAKE.
fish
, ni siquiera necesitas el \n
.
No hay una consola interactiva para Perl integrada como lo hace Python. Sin embargo, puede usar el depurador de Perl para hacer cosas relacionadas con la depuración. Lo activa con la opción -d, pero es posible que desee consultar 'man perldebug' para obtener más información.
Después de buscar un poco en Google, hay un proyecto separado que implementa una consola Perl que puede encontrar en http://www.sukria.net/perlconsole.html .
¡Espero que esto ayude!
Siempre puede ingresar al depurador incorporado y ejecutar comandos desde allí.
perl -d -e 1
Hay dos REPLs populares de Perl.
sudo apt-get install libreply-perl
. Luego se puede ejecutar simplemente escribiendo reply
en una terminal.
He creado perli
un REPL de Perl que se ejecuta en Linux, macOS y Windows .
Su enfoque es la impresión automática de resultados, búsquedas de documentación convenientes y una fácil inspección de coincidencias de expresiones regulares.
Puedes ver capturas de pantalla aquí .
Funciona de forma independiente (no tiene otras dependencias que no sea Perl), pero se recomienda encarecidamente la instalaciónrlwrap
para admitir la edición de línea de comandos, el historial de comandos persistente y la finalización de pestañas. Lea más aquí .
Instalación
Si tiene instalado Node.js:
npm install -g perli
De otra manera:
Unix -como plataformas: Descargar este script como perli
a una carpeta en el camino de su sistema y que sea ejecutable con chmod +x
.
Windows : descargue este script como perli.pl
(tenga en cuenta la .pl
extensión) a una carpeta en la ruta de su sistema.
Si no te importa invocar a Perli como perli.pl
, estás listo.
De lo contrario, cree un archivo por lotes denominado perli.cmd
en la misma carpeta con el siguiente contenido @%~dpn.pl %*
:; Esto permite la invocación como justa perli
.
perldoc
desde perli
REPL como 'someCommand ?'
. Sin embargo, parece que no se ha actualizado durante un tiempo, ¿sigues manteniendo Perli?
perl -d
es tu amigo:
% perl -de 0
re.pl de Devel :: REPL
Leer-evaluar-imprimir bucle:
$ perl -e'while(<>){print eval,"\n"}'
Perl no tiene una consola, pero el depurador puede usarse como uno. En el símbolo del sistema, escriba perl -de 1
. (El valor "1" no importa, es solo una declaración válida que no hace nada).
También hay un par de opciones para un shell Perl .
Para obtener más información, lea perlfaq3 .
Puede consultar psh aquí: http://gnp.github.io/psh/
Es un shell completo (puede usarlo en reemplazo de bash, por ejemplo), pero usa la sintaxis perl ... para que pueda crear métodos sobre la marcha, etc.
La descripción general de Matt Trout enumera cinco opciones, en perl -de 0
adelante, y recomienda Reply
, si la extensibilidad a través de complementos es importante, o tinyrepl
de Eval::WithLexicals
, para una solución mínima, puramente perl que incluye soporte de línea de lectura y persistencia léxica.
Actualización: desde entonces he creado un REPL descargable - vea mi otra respuesta .
Con el beneficio de la retrospectiva:
rlwrap
, que proporciona soporte de línea de lectura a cualquier comando, puede combinarlo con un simple comando Perl para crear un REPL utilizable y, por lo tanto, prescindir de soluciones REPL de terceros.
rlwrap
través de Homebrew con brew install rlwrap
.rlwrap
través de sus respectivos administradores de paquetes; por ejemplo, en Ubuntu, use sudo apt-get install rlwrap
.rlwrap
y un comando Perl.Lo que NO obtienes con la respuesta de Ján:
La única solución de terceros que ofrece estos (con instalación no trivial + pasos adicionales, no obvios), es psh , pero:
no ha visto actividad en alrededor de 2.5 años
su enfoque es diferente, ya que pretende ser un hecho y derecho Shell sustitución , y por lo tanto funciona como una concha tradicional, lo que significa que no se evalúa automáticamente un comando como Perl declaración, y requiere un comando de salida explícita como print
a imprime el resultado de una expresión.
La respuesta de Ján Sáreník se puede mejorar de una manera:
Si instala el Data::Printer
módulo [sudo] cpan Data::Printer
como una operación única, puede cargarlo en el REPL para usar la p()
función, a la que puede pasar listas / matrices / tablas hash para su enumeración.
Aquí hay un alias llamado iperl
readline y Data::Printer
soporte , que puede poner en el archivo de inicialización de su shell POSIX (por ejemplo, ~/.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()//$@'\'
Por ejemplo, puede hacer lo siguiente para imprimir todas las variables de entorno a través de la tabla hash %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Al igual que con la respuesta de Ján, el resultado escalar de una expresión se imprime automáticamente ; p.ej:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
También busque ptkdb en CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia y PDE también tienen REPL propios (para GNU Emacs).
Ver también Stylish REPL (para GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Puedes hacerlo en línea (como muchas cosas en la vida) aquí:
$ rlwrap perl -d -e 1
Obtendría historia y un indicador consistente