[Cascavel-pm] Controle de processo em perl

Marco A P D'Andrade mdacwb em gmail.com
Sábado Abril 7 22:09:19 PDT 2007


Kleber,

A alguns anos atrás, quando iniciei em Perl eu tinha um problema
similar ao seu... Sistema legado em Cobol e a necessidade de interação
com web.

Minha abordagem não foi o  uso de arquivos para transferência entre as
plataformas, mas argumentos e saidas em tela, sem formatação...


#-- A grosso modo o codigo ficaria assim...
unless ( open(F, "cobrun text.int XXYYZZ |") ) {
   # informo usuario do erro
   print "<h1>Falha ao ler dados: $!</h1>";
   # Registro nos logs do apache (ou arquivo de log) o erro para depuracao
   print STDERR "Id Sessao XX -> parametros: $ENV{QUERY_STRING} ->
Falha ao ler dados: $!\n";
   exit 1;
}

while ( defined( $_ = <F> ) ) {
   print $_;
}
close(F);

Claro... não recordo mais como eu recebia os parametros no cobol
(MF-3.1) ... mas pelo que lembro, seria algo trivial, assim como a
chamada de um modulo a partir de um menu principal...

Como alternativa a abordagem do Wendel seria a mais produtiva, e em
casos de perda de sincronismo, onde o processo não exclui o arquivo,
pode ser facilmente contornado com um script em cron, apagando depois
de X dias:

   find <PATH_TEMP> -name <MASK_TEMP> -cmin +60 | xargs rm

cmin => change minutes > 60
xargs => comando para separar em argumentos por arquivo

...


A proposito...  para vc utilizar wait, tem de saber qual é o PID, e
ele deve estar associado ao seu processo. Uma complexidade grande que
pode ser contornada utilizando-se simplesmente o open que citei acima.
Esta é apenas uma das maravilhas do Perl !



Espero ter contribuido um pouco.

Sds,
Marco Antonio

Em 07/04/07, Eden Cardim<edencardim em gmail.com> escreveu:
> On 4/6/07, KLEBER <payback em oi.com.br> wrote:
> > Eu desenvolvo sistema e estou trabalhando com 3 linguagens:
> >                             Cobol , javascript , perl.
> >
> > Basicamente estas linguagens atuam da seguinte maneira :
> >
> >           Javascript - Realiza validação dos dados ( formulario ) na máquina
> > do
> >                             cliente.
> >           Perl - Recebe os dados do formulario do cliente , grava em um
> > arquivo
> >                    texto para entrada de dados no cobol , executa um
> > programa
> >                     cobol através do comando system e envia a resposta ao
> > cliente.
> >          Cobol - Lê arquivo de entrada de dados , realiza manutenção na base
> >                      de dados e gera um arquivo html sobre o status do
> >                       processamento.
> >                      A resposta enviada pelo perl ao cliente está neste
> > arquivo html.
>
> Lembre-se que validação com Javascript é para economizar banda e não
> garantir segurança. O usuário não é obrigado a executar nada em
> Javascript (afinal, a máquina é dele, ele executa o que quiser). Se
> você não fizer validação server-side, o cliente vai poder submeter
> dados arbitrários para a sua base de dados. Combine isso com o fato de
> que você está usando uma chamada system() para transmitir estes dados
> a outro programa e qualquer script-kiddie vai conseguir furar sua
> segurança.
>
> --
> Eden Cardim
> Instituto Baiano de Biotecnologia
> Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
> Laboratório de Bioinformática
> --
> "you seem to think that 'close enough' is close enough...
> please learn to be 'literal' around programming."
> merlyn - on irc.freenode.net#perl
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


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