Como ler e escrever de um pipe em Perl?

Eu sou um noob Perl, então, por favor, desculpe esta questão básica. Eu preciso modificar um programa Perl existente. Eu quero pipe uma string (que pode conter várias linhas) através de um programa externo e ler a saída deste programa. Então este programa externo é usado para modificar a string. Vamos simplesmente usarcat como um programa de filtro. Eu tentei assim, mas não funciona. (Saída decat vai para stdout em vez de ser lido porperl.)

#!/usr/bin/perl

open(MESSAGE, "| cat |") or die("cat failed\n");
print MESSAGE "Line 1\nLine 2\n";
my $message = "";
while (<MESSAGE>)
{
    $message .= $_;
}
close(MESSAGE);
print "This is the message: $message\n";

Eu li que isso não é suportado pelo Perl porque pode acabar em um impasse e eu posso entender isso. Mas como eu faço então?

questionAnswers(4)

yourAnswerToTheQuestion