[Rio-pm] script reiniciando

Andre Carneiro andregarciacarneiro em gmail.com
Segunda Julho 26 13:24:33 PDT 2010


1 - system não retorna nada, então presta atenção! Seja o que for que você
tá imprimindo, é da saída padrão ( STDOUT ), e nem tudo o q vc precisa vem
no STDOUT...

perldoc -f system

2 - Você deveria usar eval para tratar suas exceções, mas não usando system,
porque system não retorna nada. Eu, particularmente gosto do readpipe, mas
tem gente aqui que vai falar para você executar o comando assim: @result =
`comando`  ( Você pode fazer isso, desde que dentro de um eval ). Ambos
podem te retornar um array com a resposta do S.O. para vc. Divirta-se!

perldoc -f readpipe

perldoc -f eval


Sugestão:

<code>

use strict;
use warnings;

.
.
.

my @result = ();
eval {
    @result = readpipe "COMANDO";
};
if($@){
      #TRATE AS EXCECOES AQUI.
}
else {
   #COMANDO OK!
}
</code>


Cheers!





2010/7/26 Denilson Silva <denilsongv2 em hotmail.com>

>
>  Oi pessoal,
>
>  Estou com o seguinte problema:
> eu tenho um script perl que executa um programa através da função
>  system, este programa gera sua saída num arquivo, ai quando ele
> termina a execução eu imprimo o conteúdo do arquivo na página web,
> porém, quando a execução do programa é demorada o script não
> continua a execução após a chamada system, ele reinicia e depois
> termina.
>
> script resumido:
> ...
> my   $query = CGI->new;
> print $query->header;
> print $query->start_html("Resultado");
> *&executaBuscas();*
> print $query->end_html;
>
>
> sub executaBuscas{
> ....
>     if ( $query->param('ncbi') ) {
>         ...
>         print $query->h2(' Resultado NCBI');
>         &*NCBI*($arquivo_de_entrada, $ncbi_prog, $ncbi_base);
>     }
> ....
> }
>
> sub NCBI {
>
>     my $ncbi      = NCBI->new();
>     $arquivo_de_saida = "resultado.txt";
>     $ncbi->setResultado($arquivo_de_saida);
>     $ncbi->*consulta*();
>     $ncbi->exibeResultado(); * <- está linha não é executada quanda função
> consulta demora na chamada system*
> }
>
> consulta{
> ....
> *system*("/usr/local/blast/bin/blastall -p $programa -d  $pathbase -i
> $sequencia -o $resultado");
> ....
> }
>
> saída com erro (o script imprime o comando print $query->h2(' Resultado
> NCBI'); duas vezes) :
>
> Resultado NCBI
> Resultado NCBI
>
> saida correta:
>
> Resultado NCBI
>
> #conteúdo do arquivo
>
>
> *
> Se alguém puder ajudar ?*
>
>
>
> Desde já obrigado.
> Abraço.
> Denilson S. de Andrade
>
>
>
>
> ------------------------------
> O INTERNET EXPLORER 8 DÁ DICAS DE SEGURANÇA PARA VOCÊ SAIBA MAIS!<http://www.microsoft.com/brasil/windows/internet-explorer/features/dicas.aspx?tabid=1&catid=1&WT.mc_id=1634>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20100726/880c85b0/attachment.html>


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