Запись во временный файл с отключенной буферизацией. Вызовите внешнюю программу, прежде чем закрыть файл в сценарии Perl, и внешняя программа сможет прочитать все, что вы написали.
use File::Temp qw(tempfile);
use IO::Handle;
my ($fh, $filename) = tempfile( $template, ... );
... make some writes to $fh ...
# flush but don't close $fh before launching external command
$fh->flush;
system("/path/to/the/externalCommand --input $filename");
close $fh;
# file is erased when $fh goes out of scope