- 論壇徽章:
- 46
|
on-fire 發(fā)表于 2012-05-25 11:33 ![]()
感覺應(yīng)該不是typo(打字排版錯誤),如果$fh 不是STDOUT或STDERR,而是一個真正的文件句柄,是否真的需要 ...
你對 Perl 的文件句柄怨念很深啊
由于歷史原因文件句柄在只能保存在 Typeglob 里面的,所以任何可以當句柄用的東西除了 tie 實現(xiàn)的假的句柄外都是對 typeglob 的封閉。
typeglob
比如 open *STDOUT, '<', 'file';
print {*STDOUT} 'testing';
bareword
比如 print FH 'something';
在編譯時會轉(zhuǎn)成對應(yīng)的 typeglob *FH
scalar
比如 open $fh, '<', 'file'
在運行時會創(chuàng)建一個匿名的 typeglob,然后 $fh 是這個 typeglob 的引用,關(guān)于句柄的所有操作對 typeglob 的引用都會自動解引用
而 tie filehandle 等于重載了 IO 相關(guān)的操作,和這里的議題無關(guān)。 |
|