Perl 如何获取已定义的${^OPEN}?

Perl 如何获取已定义的${^OPEN}?,perl,character-encoding,special-variables,Perl,Character Encoding,Special Variables,此代码中需要进行哪些更改才能获得定义的${^OPEN} #!/usr/bin/env perl use warnings; use strict; use open qw( :std :utf8 ); print ${^OPEN}; 这是一种相当令人不安的方式。使用可读性更强的Perl可能更好 :utf8输出utf-8字符集,但不检查其有效性,除了一行之外,不应使用此字符集。改用:编码(UTF-8) 有关不同类型utf-8输入/输出的更多信息,请参阅本文 我甚至不知道什么可能是${^OPE

此代码中需要进行哪些更改才能获得定义的
${^OPEN}

#!/usr/bin/env perl
use warnings;
use strict;
use open qw( :std :utf8 );

print ${^OPEN};


这是一种相当令人不安的方式。使用可读性更强的Perl可能更好

:utf8
输出utf-8字符集,但不检查其有效性,除了一行之外,不应使用此字符集。改用
:编码(UTF-8)

有关不同类型utf-8输入/输出的更多信息,请参阅本文

我甚至不知道什么可能是
${^OPEN}
变量。我建议你不要使用它,因为你不应该使用魔法标点符号


希望有帮助

为什么要检查它?我想知道是否设置了
binmode STDIN':encoding(…)
。如果设置了,我将让返回一个子程序解码字符串,否则返回未解码字符串。@sid\u com,检查
PerlIO::get\u layers(\*STDIN,details=>1)
@tobynk,这种方式在我看来并不漂亮。
Use of uninitialized value $^OPEN in print at ./perl.pl line 6.