[Rio-pm] Limpar tela

Stanislaw Pusep creaktive em gmail.com
Domingo Abril 15 13:28:11 PDT 2012


Opa, é por que o CR apenas retorna o cursor; você precisa sobrescrever o
que já foi impresso na tela! Veja como fica sobrescrevendo com espaços em
branco:

perl -e '$| = 1; @s = (".  ", ".. ", "..."); while(++$i) { print $s[$i %
@s], "\r"; sleep 1; }'

ABS()



On Sun, Apr 15, 2012 at 17:21, Aureliano Guedes <guedes_1000 em hotmail.com>wrote:

>  Boa, gostei da barrinha... hahaha,
> Obrigado por ajudar, entendi, mas tentei dessa forma
> perl -e '$| = 1; @s = qw(. .. ...); while(++$i) { print $s[$i % @s], "\r";
> sleep 1; }'
> para fazer os pontinhos mas não adiantou, quando chega nos 3 pontinhos para
>
> ------------------------------
> From: creaktive em gmail.com
> Date: Sun, 15 Apr 2012 11:36:51 -0300
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] Limpar tela
>
> A clássica "barrinha girano":
>
> perl -e '$| = 1; @s = qw(.\ .\.\ .\.\.\); while(++$i) { print $s[$i % @s],
> "\r" }'
>
> Repare no "$| = 1" no começo, isso força o flush do output para cada print
> (o default é flush quando encontra um caractere LF, "\n").
> Agora, para imprimir coisas diferentes na mesma linha de uma forma
> razoavelmente compatível, é só usar o caractere CR, "\r").
> Nota de rodapé: texto no formato "DOS" termina as linhas com CRLF; já o
> formato "UNIX" presume que LF já basta. Se não me falha a memória, MacOS
> antes do X usava apenas CR.
> Também recomendo dar uma olhada no
> https://metacpan.org/module/Term::ProgressBar
>
> ABS()
>
>
>
> On Sun, Apr 15, 2012 at 11:15, Aureliano Guedes <guedes_1000 em hotmail.com>wrote:
>
>  O problema maior é apagar *somente* os pontos, deixando na tela *tudo*aquilo que ja foi impresso.
>
>
> ------------------------------
> From: guedes_1000 em hotmail.com
> To: rio-pm em pm.org
> Date: Sun, 15 Apr 2012 14:04:24 +0000
> Subject: [Rio-pm] Limpar tela
>
>
>  Bom dia,
> Monges.
>
> Estava pensando se teria como limpar tela sem o uso de recursos externos
> pela função "system",
> pois o uso dela limita a portabilidade entre plataformas.
>
> Digamos que eu tenha uma rotina que imprima na tela de 1 a 3 pontos, como
> aquela barra
> de atualização do Windows.
>
> _____________________________________________________________________
> my $string = '.';
>
> while (($string eq '.') or ($string eq '..') or ($string eq '...')){
>
>     if (($string eq '.') or ($string eq '..')){
>         print $string, "\n";
>         $string .= '.';
>     }
>
>     else {
>         print $string, "\n";
>         chop $string;
>         chop $string;
>     }
>
>     sleep 1;
> }
> _____________________________________________________________________
>
> mas eu quero que a cada print a tela seja limpada de forma a aparecer so o
> print da vez,
> contudo mantendo a portabilidade do codigo entre as plataformas.
>
> Alguma forma simples de fazer isso??
>
> Desde já grato,
> Aureliano Guedes.
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120415/461a7144/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm