Respostas:
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.
control+ Lnão funciona nessa interface de comando, como devo atualizar a tela?
rlwrap). Todas as soluções REPL / console de terceiros, inclusive perlconsole, são difíceis de instalar e geralmente têm mais limitações.
perl -de1não parece apoio myvariáveis, e hashes não quer trabalhar, por alguma razão ...
perlconsolenã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.
[sudo] cpan Devel::REPLnã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.plautor, escreveu um artigo listando várias alternativas, e ele mesmo sugere o uso replyem vez de re.pl: shadow.cat/blog/matt-s-trout/mstpan-17
Eu escrevi um script que chamo de "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Tudo o que você digita, ele avalia no 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 você quiser histórico, use rlwrap . Pode ser seu, ~/bin/ipspor exemplo:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
E é assim que parece:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'. Usuários OSX podem instalar rlwrapvia Homebrew com brew 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:
Eu uso a linha de comando como um console:
$ perl -e 'print "JAPH\n"'
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.
fishvocê 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!
Você sempre pode simplesmente entrar no depurador interno e executar comandos a partir daí.
perl -d -e 1
Existem dois REPLs Perl populares.
sudo apt-get install libreply-perl. Em seguida, ele pode ser executado simplesmente digitando replyum terminal.
Eu criei perlium 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 derlwrap , 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:
npm install -g perliDe outra forma:
Plataformas do tipo Unix : Faça o download desse script como perliuma pasta no caminho do sistema e torne-o executável chmod +x.
Windows : Faça o download deste script como perli.pl(observe a .plextensã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.cmdem lotes nomeado na mesma pasta com o seguinte conteúdo @%~dpn.pl %*:; isso permite a invocação como justa perli.
perldocpartir do perliREPL 'someCommand ?'. Parece que não foi atualizado por um tempo, você ainda está mantendo o perli?
perlinã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.
perl -d é seu amigo:
% perl -de 0
re.pl de Devel :: REPL
Loop de leitura e avaliação:
$ perl -e'while(<>){print eval,"\n"}'
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 .
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.
A visão geral de Matt Trout lista cinco opções, a partir perl -de 0de então, e ele recomenda Reply, se a extensibilidade via plug-ins é importante, ou a tinyreplpartir de Eval::WithLexicals, para uma solução mínima de perl puro que inclua suporte à linha de leitura e persistência lexical.
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.
rlwrapvia Homebrew with brew install rlwrap.rlwrapatravés de seus respectivos gerenciadores de pacotes; por exemplo, no Ubuntu, use sudo apt-get install rlwrap.rlwrape 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 printa 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::Printermódulo [sudo] cpan Data::Printercomo uma operação única, poderá carregá-lo no REPL para uso da p()função, para o qual pode passar listas / matrizes / hashtables para enumeração.
Aqui está um apelido nomeado iperlcom readline e Data::Printersuporte , que você pode colocar no arquivo de inicialização do seu shell semelhante ao POSIX (por exemplo, ~/.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 exemplo, você pode fazer o seguinte para imprimir todas as variáveis de ambiente via hashtable %ENV:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Como na resposta de Ján, o resultado escalar de uma expressão é impresso automaticamente ; por exemplo:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Procure também ptkdb no CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sépia e PDE também possuem REPLs (para GNU Emacs).
Veja também Stylish REPL (para GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Você pode fazê-lo online (como muitas coisas na vida) aqui:
$ rlwrap perl -d -e 1Você poderia obter história e um prompt consistente