我在perl doc中读到的perl标识符应为word character
。 (不计算特殊的perl变量)。
网上某处我看到了这个示例脚本:
use 5.018;
use utf8;
my($ , $ , $ , $ ) = (1..4);
say "$ " if( $ + $ == $ );
它没有任何错误。那么,perl允许一些“骨骼和箭头”字符作为变量名?
答案 0 :(得分:6)
匹配\p{Word}
的任何内容都可以在Perl中的标识符名称中使用。 Unicode标准使用该属性定义了大量字符。
use utf8
pragma很重要;告诉Perl源文件本身是以UTF-8编码的,因此这些字符可以在代码中显示为文字。
例如,代码中的一个字符是LINEAR B IDEOGRAM B254 DART。 Unicode字符数据库表示这是一个“字母,其他”,它包含在Word字符集中。
答案 1 :(得分:2)
该示例中的字符都是Lo(Letter,Other)类别。 Perl考虑这些有效的单词字符:
use open qw(:std :encoding(UTF-8));
print grep { /\w/ } ("\x{100af}", "\x{10082}", "\x{100d8}", "\x{100ae}");