允许使用哪些符号来命名 perl5 模块和子例程?



>是吗

模块名称的[A-Za-z]::

和子例程名称的[A-Za-z_-]

附言我正在编写正则表达式来解析一些调试输出。

参见 perlvar; 由于命名子例程只是包存储中的变量,因此它们与其他变量具有相同的标识符要求。 Perldata拥有完整的细节。请记住,只要您use utf8;激活,unicode 字符在标识符中就有效,这将从 UTF-8 解码您的源代码。

包名称只是变量名称的一部分,因此它们具有相同的限制,并且它们可以包含::'分隔符,但是对于您use的任何模块,这里都有一个额外的实际限制,因为这会将其转换为文件名,然后取决于您的文件系统支持的内容。CPAN 工具链的许多部分也无法处理非 ASCII 包名称。所以这通常不是一个好主意。这里有一些 Acme 模块可以试水。

本质上:

  • 如果use utf8未处于活动状态,则标识符可能包含"ASCII 范围内的任何单词字符,只要第一个字符不是数字"。这里的"字"字是指[a-zA-Z0-9_]
  • 如果use utf8处于活动状态,则标识符可能以 Unicode"开始"字符或下划线开头,后跟 Unicode "继续"字符。此外,所有字符都必须是 unicode 字字符。

-连字符在任何标识符中都无效(下面提到的标点符号标识符除外)。

还有"特殊标识符",它们主要由特殊的Perl全局变量组成:全数字变量,由单个标点字符组成的变量,由^后跟字母组成的变量,以及由^后跟带有所需大括号的单词组成的变量(例如@{^CAPTURE})。这些都不用于我能回忆起的符号可选子例程。

相关内容

最新更新