以下是函数文档的相关摘录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 句柄(文件句柄或目录句柄)的真实引用。您最多可以获得对 typeglob 的引用,它实际上是一个完整的符号表条目 [...] 但是,您仍然可以使用 type glob 和 globrefs,就好像它们是 IO 句柄一样。
在什么情况下会ref
返回'IO'
呢?