Como posso atualizar um display de progresso em um aplicativo de linha de comando Perl?
-
07-07-2019 - |
Pergunta
Eu tenho um pequeno script Perl (no Windows) que verifica alguns arquivos para mim como uma ajuda para o meu dia-a-dia. No momento em que ele imprime algo como ...
0%
25%
50%
75%
Complete
Mas me lembro de scripts que eu usei no passado que não foi impresso progresso em uma base linha por linha, mas que atualizou a saída na tela, presumivelmente, movendo o cursor para trás e sobre-impressão que estava lá.
Alguém sabe o que magia é necessária? Portabilidade não é importante para mim, o script é bastante descartável.
Solução
Além das outras respostas, \ r vai voltar para o início da linha atual
Outras dicas
Você pode usar maldições e fazer um bar agradável progresso.
Editar : Ou fazer algo parecido com isto:
print "##### [ 10%]\r";
# Do something
print "########## [ 20%]\r";
# Do something else
print "############### [ 30%]\r";
# Do some more
# ...
# ...
# ...
print "##################################### [100%]\n";
print "Done.\n";
Se você precisar de fazer alguma coisa em Perl, é muito provável que alguém tenha feito isso e carregou-a CPAN. Olhada em alguns dos módulos com "progresso" em seu nome .
Você pode estar interessado em inteligentes Comentários . Este seria provavelmente mais fácil do que a codificação seus próprios barras de progresso.
Você deve ser capaz de imprimir um caráter backspace '\ b' para mover o cursor de volta para que você possa substituir o que você imprimiu anteriormente.
Eu não sei se isso funciona em Perl, mas em C / C ++ você pode usar
\bpara um retrocesso. Usando vários deles, você pode mover o cursor para substituir valores antigos.