既存のPerlプログラムを変更する必要があります。文字列(複数の行を含むことができる)を外部プログラムにパイプして、このプログラムからの出力を読み取りたい。この外部プログラムは、文字列を変更するために使用されます。cat
単純にフィルタープログラムとして使用してみましょう。このように試しましたが、うまくいきません。(の出力は、cat
によって読み取られるのではなく、STDOUTに送られます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でサポートされていないことを読みましたが、理解できます。しかし、どうすればそれを行うことができますか?