Como posso iniciar um console interativo para Perl, semelhante ao irb
comando para Ruby ou python
Python?
264
Como posso iniciar um console interativo para Perl, semelhante ao irb
comando para Ruby ou python
Python?
Você pode usar o depurador perl em um programa trivial, assim:
perl -de1
Como alternativa, há o aplicativo Perl Console de Alexis Sukrieh , mas eu não o usei.
$ rlwrap perl -d -e 1
Você poderia obter história e um prompt consistentecontrol
+L
não funciona nessa interface de comando, como devo atualizar a tela?rlwrap
). Todas as soluções REPL / console de terceiros, inclusiveperlconsole
, são difíceis de instalar e geralmente têm mais limitações.perl -de1
não parece apoiomy
variáveis, e hashes não quer trabalhar, por alguma razão ...perlconsole
não sofre com esses problemas.Matt Trout não apenas escreveu um artigo sobre um REPL, como também escreveu um - Devel :: REPL
Eu usei um pouco e funciona bastante bem, e está em desenvolvimento ativo.
BTW, não tenho idéia por que alguém modificou a pessoa que mencionou usar "perl -e" no console. Isso não é realmente um REPL, é verdade, mas é fantasticamente útil, e eu o uso o tempo todo.
fonte
[sudo] cpan Devel::REPL
não funcionou para mim, nem no OSX 10.10 (Perl 5.18.2) nem no Ubuntu 14.04 (Perl 5.18.2): Eu recebo erros de tempo de execução reclamando da falta de módulos; instalou um e desistiu depois que outro módulo ausente foi relatado.re.pl
autor, escreveu um artigo listando várias alternativas, e ele mesmo sugere o usoreply
em vez dere.pl
: shadow.cat/blog/matt-s-trout/mstpan-17Eu escrevi um script que chamo de "psh":
Tudo o que você digita, ele avalia no Perl:
fonte
Se você quiser histórico, use rlwrap . Pode ser seu,
~/bin/ips
por exemplo:E é assim que parece:
fonte
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Usuários OSX podem instalarrlwrap
via Homebrew combrew install rlwrap
.rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Eu acho que você está perguntando sobre uma interface REPL (ler, avaliar, imprimir, loop) para perl. Há algumas maneiras de fazer isto:
fonte
Eu uso a linha de comando como um console:
Então eu posso usar meu histórico do bash para recuperar comandos antigos. Isso não preserva o estado, no entanto.
Este formulário é mais útil quando você deseja testar "uma coisinha" (como ao responder perguntas de Perl). Muitas vezes, acho que esses comandos são escritos literalmente em um script de shell ou makefile.
fonte
fish
você nem precisa do\n
.Não há um console interativo para Perl integrado como o Python. No entanto, você pode usar o Perl Debugger para executar tarefas relacionadas à depuração. Você o ativa com a opção -d, mas pode querer verificar o 'man perldebug' para aprender sobre isso.
Depois de pesquisar um pouco, existe um projeto separado que implementa um console Perl que você pode encontrar em http://www.sukria.net/perlconsole.html .
Espero que isto ajude!
fonte
Você sempre pode simplesmente entrar no depurador interno e executar comandos a partir daí.
fonte
Existem dois REPLs Perl populares.
fonte
sudo apt-get install libreply-perl
. Em seguida, ele pode ser executado simplesmente digitandoreply
um terminal.Eu criei
perli
um Perl REPL que roda em Linux, macOS e Windows .Seu foco é a impressão automática de resultados, pesquisas práticas na documentação e inspeção fácil de correspondências de expressões regulares.
Você pode ver as capturas de tela aqui .
Funciona independente (não possui dependências além do próprio Perl), mas é altamente recomendável a instalação de
rlwrap
, a fim de oferecer suporte à edição de linha de comando, histórico de comandos persistente e conclusão de guias - leia mais aqui .Instalação
Se você tiver o Node.js instalado:
De outra forma:
Plataformas do tipo Unix : Faça o download desse script como
perli
uma pasta no caminho do sistema e torne-o executávelchmod +x
.Windows : Faça o download deste script como
perli.pl
(observe a.pl
extensão) para uma pasta no caminho do sistema.Se você não se importa de chamar Perli como
perli.pl
, está tudo pronto.Caso contrário, crie um arquivo
perli.cmd
em lotes nomeado na mesma pasta com o seguinte conteúdo@%~dpn.pl %*
:; isso permite a invocação como justaperli
.fonte
perldoc
partir doperli
REPL'someCommand ?'
. Parece que não foi atualizado por um tempo, você ainda está mantendo o perli?perli
não foi atualizado há algum tempo, porque, no meu uso pessoal, não encontro nenhum problema e poucas pessoas parecem usá-lo, mas, tanto quanto sei, ainda funciona como anunciado.Eu sempre fiz:
Com a 5.10, mudei para:
(rlwrap é opcional)
fonte
perl -d
é seu amigo:fonte
re.pl de Devel :: REPL
fonte
Loop de leitura e avaliação:
fonte
O Perl não possui um console, mas o depurador pode ser usado como um. No prompt de comando, digite
perl -de 1
. (O valor "1" não importa, é apenas uma declaração válida que não faz nada.)Existem também algumas opções para um shell Perl .
Para mais informações, leia perlfaq3 .
fonte
Você pode procurar no psh aqui: http://gnp.github.io/psh/
É um shell completo (você pode usá-lo em substituição ao bash, por exemplo), mas usa a sintaxe perl .. para criar métodos dinamicamente etc.
fonte
Sob Debian / Ubuntu:
fonte
A visão geral de Matt Trout lista cinco opções, a partir
perl -de 0
de então, e ele recomendaReply
, se a extensibilidade via plug-ins é importante, ou atinyrepl
partir deEval::WithLexicals
, para uma solução mínima de perl puro que inclua suporte à linha de leitura e persistência lexical.fonte
Atualização: criei um REPL para download - veja minha outra resposta .
Com o benefício da retrospectiva:
rlwrap
, que fornece suporte de linha de leitura a qualquer comando, poderá combiná-la com um comando Perl simples para criar um REPL utilizável e, assim, se contentar com as soluções REPL de terceiros.rlwrap
via Homebrew withbrew install rlwrap
.rlwrap
através de seus respectivos gerenciadores de pacotes; por exemplo, no Ubuntu, usesudo apt-get install rlwrap
.rlwrap
e um comando Perl.O que você NÃO recebe com a resposta de Ján:
A única solução de terceiros que oferece essas opções (com instalação não trivial + etapas adicionais e não óbvias) é psh , mas:
não vê atividade há cerca de 2,5 anos
seu foco é diferente na medida em que pretende ser um pleno direito de substituição shell , e, portanto, funciona como um escudo tradicional, o que significa que não avalia automaticamente um comando como Perl declaração, e requer um comando de saída explícita, como
print
a imprime o resultado de uma expressão.A resposta de Ján Sáreník pode ser melhorada de uma maneira:
Se você instalar o
Data::Printer
módulo[sudo] cpan Data::Printer
como uma operação única, poderá carregá-lo no REPL para uso dap()
função, para o qual pode passar listas / matrizes / hashtables para enumeração.Aqui está um apelido nomeado
iperl
com readline eData::Printer
suporte , que você pode colocar no arquivo de inicialização do seu shell semelhante ao POSIX (por exemplo,~/.bashrc
):Por exemplo, você pode fazer o seguinte para imprimir todas as variáveis de ambiente via hashtable
%ENV
:Como na resposta de Ján, o resultado escalar de uma expressão é impresso automaticamente ; por exemplo:
fonte
Procure também ptkdb no CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
fonte
Sépia e PDE também possuem REPLs (para GNU Emacs).
fonte
Veja também Stylish REPL (para GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
fonte
Você pode fazê-lo online (como muitas coisas na vida) aqui:
https://www.tutorialspoint.com/execute_perl_online.php
fonte