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

thiagoglauco at ticursos.net thiagoglauco at ticursos.net
Tue Jun 8 17:31:59 PDT 2010


Só complementando o Expect.pm - gosto muito deste módulo:

$exp->spawn($command, @parameters)
     or die "Cannot spawn $command: $!\n";

   # send some string there:
   $exp->send("string\n");

   # or, for the filehandle mindset:
   print $exp "string\n";

   # then do some pattern matching with either the simple interface
   $patidx = $exp->expect($timeout, @match_patterns);

Então, perceba que você pode fazer o mesmo do que com readpipe, porém  
de forma mais organizada e com a possibilidade de iteração com o  
comando - tem aqueles comandos chatos que ficam pedindo parametros  
para o usuário.

Quoting thiagoglauco em ticursos.net:

> 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
>>
>
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm





More information about the SaoPaulo-pm mailing list