Fortranコードが既存のファイルから順番に読み取り、書き込みを行うが、Perlコードから「リアルタイム」で通信したい場合は、名前付きパイプを使用して回避できます。それらはファイルシステムのエントリとしてまだ存在し、名前を付けられたFortranコードによって通常のファイルとして開くことができますが、それらからの読み取り/書き込みはパイピングのように機能します。
Perlでは、次のようなことを行います(この回答から露骨にコピーされています)。
use File::Temp qw(tempdir);
use File::Spec::Functions qw(catfile);
use POSIX qw(mkfifo);
my $dir = tempdir(CLEANUP=>1);
my $inputfifo = catfile($dir, "input");
mkfifo($inputfifo, 0700) or die "mkfifo($inputfifo) failed: $!";
my $outputfifo = catfile($dir, "output");
mkfifo($outputfifo, 0700) or die "mkfifo(output$fifo) failed: $!";
my $errorfifo = catfile($dir, "error");
mkfifo($errorfifo, 0700) or die "mkfifo($errorfifo) failed: $!";
... open the FIFOs ...
system "/mydirectories/fortranexecutable $inputfifo $outputfifo $errorfifo";
... operate with the FIFOs to communicate with the Fortran code ...
... close FIFOs and remove $dir when finished ...