Perl piping alguns fora do script e alguns para a tela

1

Como canalizar alguma saída para a tela e alguma outra saída selecionada, fora do script Perl?

    
por Hermann Ingjaldsson 17.07.2012 / 17:56

2 respostas

3

Usando diferentes identificadores de arquivo.

Por padrão, você terá os dois STDOUT e STDERR . A função print em Perl é realmente curta para print STDOUT .

Em seu terminal STDOUT recebe o identificador de arquivo 1 e STDERR recebe o identificador de arquivo 2 .

Aqui está um exemplo de impressão para cada identificador de arquivo e redirecionando cada um para / dev / null.

$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";'
foo
bar
$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 1> /dev/null
bar
% perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 2> /dev/null
foo
  • O primeiro comando imprime os dois.
  • O segundo comando joga fora STDOUT e imprime apenas STDERR
  • O terceiro comando joga fora STDERR e imprime apenas STDOUT

Você também pode declarar suas próprias alças de arquivo (por exemplo, um arquivo de log) e imprimir para isso. Veja perldoc -f open .

    
por 17.07.2012 / 21:34
1

você provavelmente desejará ler a documentação do perlipc, em particular a seção sobre pipes nomeados.

link

perlipc - Comunicação entre processos Perl (sinais, fifos, pipes, subprocessos seguros, soquetes e semáforos)

Se você precisar de comunicação bidirecional (leitura e gravação) com um programa externo, os módulos IPC :: Open2 ou IPC :: Open3 (padrão perl lib, também documentados na URL acima) serão úteis.

    
por 18.07.2012 / 09:32

Tags