如何确定命令行参数是否已被解码?

时间:2017-03-14 10:04:13

标签: perl

如果(并且仅当)脚本运行@ARGV命令行选项,我想解码-CA。例如:

use strict;
use warnings;

use Encode qw(decode_utf8);
BEGIN {
    if ( ... ) {    # <--- What condition to put here?
        @ARGV = map { Encode::decode_utf8( $_ ) } @ARGV;
    }
}

我在perlvarperlrun中找到了变量${^UNICODE},但似乎没有记录哪个位对应A标志。

1 个答案:

答案 0 :(得分:4)

perlrun says A标记的-C部分对应32(强调我的)。

  

从5.8.1开始,-C可以跟随数字或列表   选项字母。字母,其数值和效果如下   如下:列出这些字母等于对数字求和。

[...]
A    32   the @ARGV elements are expected to be strings encoded
          in UTF-8

进一步说它${^UNICODE}反映了-C标志后面的东西的数值。因此,检查-CA未被使用的正确方法是!( ${^UNICODE} & 0x20 )