[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