[Cascavel-pm] Simular o pipe "|"

Luiz Gonzaga lgonzaga em lncc.br
Quinta Agosto 4 03:53:56 PDT 2005


Nilson e Vinicius,

Eu jah sabia que o (<>) fazia isto para um arquivo. Nao sabia que fazia para varios. 
Isto me sera util, pois preciso manipular muitos arquivos.

Mas ainda continua obscuro, para min, como uso o (<>) para resolver o problema inicial, que era passar o conteudo de uma variavel scalar para um programa atraves do pipe.

Este problema jah estah resolvido com o 'open P, "|/bin/etc', porem fica a curiosidade sobre o diamante.

Abracos, Luiz.

On Wed, 3 Aug 2005 21:26:56 -0300
Nilson Santos Figueiredo Junior <acid06 em gmail.com> wrote:

> On 8/3/05, Alceu R. de Freitas Jr. <glasswalk3r em yahoo.com.br> wrote:
> > O operador "diamante" lê diretamente de STDIN. A menos
> > que o Marco tenha algum truque, não vejo como usá-lo
> > nesse caso.
> 
> Na verdade, o filehandle nulo (aka diamond operator) é algum
> extremamente mágico.
> 
> Se você tem um programa que faça:
> 
> while (<>) {
>   # do stuff
> }
> 
> O filehandle nulo vai representar a STDIN OU vai ser um atalho mágico
> para todos os arquivos passados como parâmetros. Dessa forma, se você
> chamar o programa da seguinte maneira:
> 
> perl programa.pl arquivo1 diretorio/arquivo2 arquivo3
> 
> O perl magicamente vai abrindo os arquivos "arquivo1",
> "diretorio/arquivo2" e  "arquivo3" à medida que o EOF de cada um é
> antingido e vai dando a saída como um grande arquivo contínuo. Você
> pode até mesmo colocar mais nomes de arquivos na @ARGV em run time que
> ele vai continuar os que você adicionar.
> 
> O mais interessante de tudo é que um programa usando essa construct,
> *também* aceita entrada na forma:
> 
> perl programa.pl < arquivo1
> 
> Mas a primeira forma que citei é mais interessante. Em shells que
> fazem wildcard expansion ou fazendo uso do módulo Win32::Autoglob,
> você pode fazer coisas como:
> 
> perl programa.pl *.log
> 
> E o filehandle nulo lerá de todos os arquivos .log. Bem útil, uso bastante.
> 
> -Nilson Santos F. Jr.
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm


Mais detalhes sobre a lista de discussão Cascavel-pm