nneul has asked for the wisdom of the Perl Monks concerning the following question:
I saw an approach with pulling in the posix module and using one of it's routines, but I hate to bring in all of POSIX just to close an fd. Is there any reasonable way to do this? Note, I am not planning on issuing an exec(), so the $^F approach won't work.#!/usr/bin/perl $| = 1; open(OUT, ">foo"); &CloseAllOpenFiles(); print "done with close.\n"; sleep 20; # go look at process with lsof to see if fd still open sub CloseAllOpenFiles { local *F; for (my $fd=0; $fd<=1024; $fd++) { open F, "<&=$fd" or warn "Cannot reopen fd=$fd: $!"; close F; } }
|
---|