Bom minha duvida e meio noob to começando agora com perl, queria alguma forma de usar o sleep sem travar o resto do script e teria que ser um loop pra ficar repetindo a mensagem a cada 50 segundos, desde já agradeço por qualquer ajuda.
while (sleep 50) {
message "Wello word';
}
obrigado deu certo a alguma forma de trocar a cor dessa mensagem?
4. Re: Sleep
paulo1205usa Ubuntu
Post recolhido
Enviado em 06/04/2016 - 10:23h
A suposição do sleep é justamente parar o processamento por um período de tempo (ou até o recebimento de um sinal externo).
Se tudo o que você quer é imprimir periodicamente uma mensagem do tipo "estou vivo", enquanto programa faz outra coisa, pode usar um timer e uma função tratadora de sinais.
Por exemplo, o código abaixo ajusta um alarme para dez segundos, com repetições posteriores a cada 7,5 segundos. A cada alarme, a função tratadora do sinal de alarme faz tocar um beep no terminal.
# Aqui faz um processamento demorado qualquer.
# No meu caso, vou calcular um bilhão de cossenos.
$c=0;
for($i=0; $i<1000000000; $i++){
$c=cos($c);
}
Eu frequentemente prefiro essa abordagem a criar múltiplas threads ou processos.
5. Re: Sleep
paulo1205usa Ubuntu
Post recolhido
Enviado em 06/04/2016 - 10:32h
dvinciguerra escreveu:
Seria melhor conhecer o cenário antes de sair sugerindo algo mas acho que para o seu problema um fork com um while(1) ja ajudaria.
Do jeito como você fez, ele teria de lembrar de matar o processo filho e de chamar waitpid. Caso contrário, o processo que fica só “pingando” vai permanecer executando depois que o programa principal acabar.
6. Re: Sleep
saydeusa Outra
Post recolhido
Enviado em 06/04/2016 - 10:38h
Esse e meu código o que quero e adicionar uma mensagem que rode nele a cada 50 segundos no caso essa mensagem só que tem que estar na cor verde
Atualização semanal http://openkorebrasil.org/ By Sayd.
package connection;
use strict;
use Plugins;
use Log qw(message);
use Globals;
use Network::Send::bRO;
use Network::Receive::bRO;
while (my ($k, $v) = each %packets) { $handlers{$v->[0]} = $k}
$self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
$self->cryptKeys(1561149935, 298664203, 1910900477);
return $self;
};
1
7. Re: Sleep
dvinciguerrausa Debian
Post recolhido
Enviado em 06/04/2016 - 10:40h
paulo1205,
"Seria melhor conhecer o cenário antes de sair sugerindo algo..."
Tudo que eu fiz foi dar as referencias... (até por que a documentação oficial carece de exemplos práticos)
Dependendo do cenário dele um scheduler como o cron já seria o suficiente... ou ele poderia utilizar algum framework de eventos como o IO::Assync!
Abs,
8. Re: Sleep
dvinciguerrausa Debian
Post recolhido
Enviado em 06/04/2016 - 10:45h
Pronto!
Agora eu já sei que ele quer mexer com bots de Ragnarok! =P
9. Re: Sleep
paulo1205usa Ubuntu
Post recolhido
Enviado em 06/04/2016 - 10:59h
Sim, e o pedaço que ele mostrou é implementação de uma biblioteca (package). Acho que nenhuma das abordagens é boa numa biblioteca.