A dificuldade aqui é que quando tee
é invocado no pipeline, seu stdout já foi destinado a stdin de perl
. A única maneira de saber onde o stdout foi direcionado antes do pipeline é iniciar o dup para um outro descritor de arquivo, e para acessar esse descritor de arquivo via /dev/fd/n
, se o seu SO suportar isso. Então, isso pode ser uma opção:
# dup fd 1 to another fd for the duration of this shell script.
# we'll use 4. any number higher than 2 is probably OK, but
# some coordination is required if a containing shell script
# decided to do the same thing.
exec 4>&1
cat myfile | awk '$3 > 0 { print $1, $2 * $3 }' | tee /dev/fd/4 | perl myscript.pl