[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