note
dsb
Seems like several of the previous posters used a typeglob to have a passable version of a filehandle. By passable, I mean that the filehandle can be <i>passed</i> into a function or placed in some other list form like an array.
<p>
In <a href="http://perl.plover.com/local.html#3_The_First_Class_Filehandle_Tr">Seven Useful Uses of <tt>local</tt></a>, [Tachyon] demonstrates a pretty neat way of accomplishing just that.
<code>
my $filehandle = do { local *FH };
</code>
[Tachyon]'s explanation:
<blockquote><i><font size="2">
<tt>do</tt> just introduces a block which will be evaluated, and will return the value of the last expression that it contains, which in this case is <tt>local *FH</tt>. The value of <tt>local *FH</tt> is a glob. But what glob?
<p>
<tt>local</tt> takes the existing FH glob and temporarily replaces it with a new glob. But then it immediately goes out of scope and puts the old glob back, leaving the new glob without a name. But then it returns the new, nameless glob, which is then stored into $filehandle. This is just what we wanted: A glob that has been disconnected from the symbol table.
</font></i></blockquote>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-6762">
<P>
<HR color="lime">
<b>dsb</b><br>
<font size="-1">This <TT>@ISA my</TT> cool <TT>%SIG</TT></font>
</div></div>
482211
482211