[Pdx-pm] Some filehandle help needed
Michael G Schwern
schwern at pobox.com
Tue Aug 7 14:52:01 PDT 2007
Kyle Dawkins wrote:
> This works (feel free to tell me a better way to deal with the fh,
> too... I need to use getc, so using IO::Handle seemed the best way to
> do it... maybe that's my prob?):
> my $_tty = _tty();
> open my $_fout, "> /dev/$_tty";
> my $fout = IO::Handle->new_from_fd($_fout, "w");
Though its not clear from the docs, new_from_fd() takes a file *descriptor*
not a file handle. Yes, its a ridiculous interface for a Perl module.
My guess as to why it works inline but not in a subroutine is that $fout does
not actually store a reference to $_fout but just its fileno. Once $_fout
goes out of scope the filehandle closes. That's my guess.
IO::Handle was written in the days before lexical filehandles and doesn't seem
to have caught up.
More information about the Pdx-pm-list