Как читать и писать из канала в Perl?

Я новичок в Perl, так что извините за этот элементарный вопрос. Мне нужно изменить существующую программу Perl. Я хочу передать строку (которая может содержать несколько строк) через внешнюю программу и прочитать вывод этой программы. Итак, эта внешняя программа используется для изменения строки. Давайте просто используем catв качестве программы-фильтра. Я пробовал так, но это не работает. (Вывод catотправляется на стандартный вывод вместо того, чтобы быть прочитанным perl.)

#!/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";

Я читал, что это не поддерживается Perl, потому что это может привести к тупиковой ситуации. и я могу это понять. Но как мне тогда это сделать?

16
задан Greg Bacon 26 May 2012 в 19:26
поделиться