${^OPEN}

PerlIO 使用的内部变量。一个由 \0 字节分隔的两部分字符串,第一部分描述输入层,第二部分描述输出层。

这是应用 open 实用程序的词法效应,以及 -C 命令行开关和 PERL_UNICODE 环境变量ioD 选项的主要程序范围效应的机制。

函数 accept()open()pipe()readpipe()(以及相关的 qx`STRING` 操作符)、socket()socketpair()sysopen() 受此变量的词法值影响。由 readline()(或相关的 <><<>> 操作符)在传递的文件名上打开的隐式 "ARGV" 句柄也受影响(但如果打开 STDIN 则不受影响)。如果未设置此变量,则这些函数将按 "PerlIO 中的默认值以及如何覆盖它们" 中所述设置默认层。

当使用 3 个参数调用 open() 并且指定了显式层时,open() 将忽略此变量(和默认层)。通过 IO::Handle 等模块对这些函数进行间接调用不受影响,因为它们发生在不同的词法范围内。当前不受由 opendir() 打开的目录句柄的影响。

此变量在 Perl v5.8.0 中添加。