[SP-pm] Dúvida sobre execução de comandos em Perl

thiagoglauco at ticursos.net thiagoglauco at ticursos.net
Tue Jun 8 17:22:06 PDT 2010


Existem muitas maneiras de fazer isto em perl...

a basicona:

@array = `comando -abc`;

via pipe, como seu exemplo

com a funçao system:

@comando = qw(comando argumento1 argumento2)
system(@comando);

ou no windows:

use strict;
use Win32::Job;

eval {
      my $j ob = Win32 ::Job->new( ) ;
      my $result = $obj->spawn( ?comando?) ;
      die ?Value is unde?ned. ?. $^E. ?\n? unless (de?ned $result) ;
      my $ok = $obj->run(60) ;
}
print $@. ?\n? if ($@) ;

No Linux o módulo Expect.pm é muito bom para executar comandos.

Já o Oracle não sei.

Eu prefiro usar o readpipe para rodar um bloco de código meu que eu  
dei um fork por exemplo.

Espero ter ajudado!!!


Quoting Andre Carneiro <andregarciacarneiro em gmail.com>:

> Salve!
>
>
> Estava olhando o código do módulo: Oracle::Loader, e me deparei com uma
> abordagem para se executar comandos que eu não conhecia. Trata-se do
> seguinte segmento de código:
>
>
>
> <code>
> .
> .
> .
>
> open CMD, "$cmd |" or croak "Could not run sqlplus: $!\n";
> my @a = <CMD>;
> close CMD;
>
> .
> .
> .
>
> </code>
>
>
> Tenho duas perguntas:
>
> 1 - Existe um comando chamado readpipe, que me retorna um array onde cada
> item do array corresponde a uma linha na saída do comando. Alguém sabe me
> dizer se é a mesma coisa e/ou é preferível usar readpipe do que um código
> igual a esse? ;
>
> 2 - Alguém conhece outro módulo mais novo que esse para 'brincar' com o
> SQLLoader? Eu não encontrei no CPAN .
>
>
>
> Cheers!
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>





More information about the SaoPaulo-pm mailing list