【发布时间】:2010-06-02 06:20:26
【问题描述】:
这是ref函数文档的相关摘录:
返回的值取决于引用所引用的事物的类型。内置类型包括:
SCALAR ARRAY HASH CODE REF GLOB LVALUE FORMAT IO VSTRING Regexp
基于此,我想象在文件句柄上调用ref 将返回'IO'。令人惊讶的是,它没有:
use strict;
use warnings;
open my $fileHandle, '<', 'aValidFile';
close $fileHandle;
print ref $fileHandle; # prints 'GLOB', not 'IO'
perlref 试图解释原因:
不可能创建一个真正的 引用一个 IO 句柄(文件句柄 或 dirhandle) 使用反斜杠 操作员。你能得到的最多是一个 对 typeglob 的引用,即 实际上是一个完整的符号表 条目 [...] 但是,您仍然可以 使用类型 glob 和 globrefs 就好像它们是 IO 句柄一样。
那么ref会在什么情况下返回'IO'呢?
【问题讨论】:
-
我认为
perlref的摘录在这里并不完全相关,但它是我能找到的最接近的。
标签: perl filehandle