如果 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 ...