¿Cómo puedo iniciar una consola interactiva para Perl, similar al irb
comando para Ruby o python
Python?
264
¿Cómo puedo iniciar una consola interactiva para Perl, similar al irb
comando para Ruby o python
Python?
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.
$ rlwrap perl -d -e 1
Obtendría historia y un indicador consistentecontrol
+L
no funciona bajo esta interfaz de comando, ¿cómo debo actualizar la pantalla?rlwrap
). Todas las soluciones de REPL / consola de terceros, incluidasperlconsole
, son difíciles de instalar y a menudo tienen más limitaciones.perl -de1
no parece admitirmy
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.
fuente
[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 enreply
lugar dere.pl
: shadow.cat/blog/matt-s-trout/mstpan-17Escribí un script que llamo "psh":
Cualquier cosa que escriba, se evalúa en Perl:
fuente
Si quieres historia, usa rlwrap . Este podría ser tu
~/bin/ips
por ejemplo:Y así es como se ve:
fuente
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Los usuarios de OSX pueden instalar arlwrap
través de Homebrew conbrew 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:
fuente
Yo uso la línea de comando como consola:
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.
fuente
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!
fuente
Siempre puede ingresar al depurador incorporado y ejecutar comandos desde allí.
fuente
Hay dos REPLs populares de Perl.
fuente
sudo apt-get install libreply-perl
. Luego se puede ejecutar simplemente escribiendoreply
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ón
rlwrap
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:
De otra manera:
Unix -como plataformas: Descargar este script como
perli
a una carpeta en el camino de su sistema y que sea ejecutable conchmod +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 justaperli
.fuente
perldoc
desdeperli
REPL como'someCommand ?'
. Sin embargo, parece que no se ha actualizado durante un tiempo, ¿sigues manteniendo Perli?perli
no se ha actualizado en mucho tiempo, porque en mi uso personal no he encontrado ningún problema, y pocas personas parecen usarlo, pero, por lo que sé, todavía funciona como se anuncia.Siempre hice:
Con 5.10, me cambié a:
(rlwrap es opcional)
fuente
perl -d
es tu amigo:fuente
re.pl de Devel :: REPL
fuente
Leer-evaluar-imprimir bucle:
fuente
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 .
fuente
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.
fuente
Bajo Debian / Ubuntu:
fuente
La descripción general de Matt Trout enumera cinco opciones, en
perl -de 0
adelante, y recomiendaReply
, si la extensibilidad a través de complementos es importante, otinyrepl
deEval::WithLexicals
, para una solución mínima, puramente perl que incluye soporte de línea de lectura y persistencia léxica.fuente
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 conbrew install rlwrap
.rlwrap
través de sus respectivos administradores de paquetes; por ejemplo, en Ubuntu, usesudo 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 lap()
función, a la que puede pasar listas / matrices / tablas hash para su enumeración.Aquí hay un alias llamado
iperl
readline yData::Printer
soporte , que puede poner en el archivo de inicialización de su shell POSIX (por ejemplo,~/.bashrc
):Por ejemplo, puede hacer lo siguiente para imprimir todas las variables de entorno a través de la tabla hash
%ENV
:Al igual que con la respuesta de Ján, el resultado escalar de una expresión se imprime automáticamente ; p.ej:
fuente
También busque ptkdb en CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
fuente
Sepia y PDE también tienen REPL propios (para GNU Emacs).
fuente
Ver también Stylish REPL (para GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
fuente
Puedes hacerlo en línea (como muchas cosas en la vida) aquí:
https://www.tutorialspoint.com/execute_perl_online.php
fuente