IO::Fileオブジェクトまたはtypeglob(\*STDOUTまたはSymbol::symbol_to_ref("main::FH"))のいずれかが与えられます。それが読み取りハンドルか書き込みハンドルかをどのように判断しますか?この情報を渡すためにインターフェースを拡張することはできません(実際のクローズの前にclose呼び出しを追加するためにオーバーライドしていflushます)。sync
現在、私はファイルハンドルを試し、エラーを無視しようflushとしています(これは、ファイルハンドルを読み取ろうとしたときに得られるものです)。sync"Invalid argument"flushsync
eval { $fh->flush; 1 } or do {
#this seems to exclude flushes on read handles
unless ($! =~ /Invalid argument/) {
croak "could not flush $fh: $!";
}
};
eval { $fh->sync; 1 } or do {
#this seems to exclude syncs on read handles
unless ($! =~ /Invalid argument/) {
croak "could not sync $fh: $!";
}
};