【问题标题】:How to get a defined ${^OPEN}?如何获得已定义的 ${^OPEN}?
【发布时间】:2014-07-17 10:53:48
【问题描述】:

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

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

print ${^OPEN};

Use of uninitialized value $^OPEN in print at ./perl.pl line 6.

【问题讨论】:

  • 你为什么要检查那个?
  • 我想知道是否设置了binmode STDIN ':encoding(...)。如果设置了,我会让返回一个子程序解码字符串,否则返回不解码字符串。
  • @sid_com,检查PerlIO::get_layers(\*STDIN, details => 1)
  • @tobyink,我觉得这条路不好看。

标签: perl character-encoding special-variables


【解决方案1】:

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

:utf8 输出 utf-8 字符集但不检查其有效性,你不应该使用这个,除了一个衬里。请改用:encoding(UTF-8)

有关不同类型的 utf-8 输入/输出的更多信息,请参阅此帖子 How differs the open pragma with different utf8?

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多