以星号*开头的Perl标识符代表什么?

Rav*_*ngh 5 regex perl

我有这个子例程,其标识符定义为

*VALID_NAME_REG_EX = \"[ a-zA-Z0-9_#.:@=-]+";
*MACRO_VALID_NAME  = \"MACRO_VALID_NAME";
Run Code Online (Sandbox Code Playgroud)

我进一步查看了该文件.它们被引用为$MACRO_VALID_NAME.

我想这是用字符串的右侧替换值,但我不确定这个并想要确认.

Bor*_*din 8

*VALID_NAME_REG_EX = \"[ a-zA-Z0-9_#.:@=-]+";
Run Code Online (Sandbox Code Playgroud)

其效果是指定$VALID_NAME_REG_EX为Perl字符串文字的标识符"[ a-zA-Z0-9_#.:@=-]+"

这与说法不同

$VALID_NAME_REG_EX = "[ a-zA-Z0-9_#.:@=-]+"
Run Code Online (Sandbox Code Playgroud)

它将字符串复制到分配给的空间中,$VALID_NAME_REG_EX以便以后可以更改

Perl文字必须是只读的才有意义,因此赋值的结果是创建$VALID_NAME_REG_EX一个只读变量,也称为常量.如果您尝试分配给它,您将收到类似的消息

尝试修改只读值

  • @mattfreake:这不是使其成为只读的typeglob,而是指向Perl字符串文字,这本身就是不可修改的.如果我说'*var_b =\$ var_a`然后我让`$ var_b`引用与`$ var_a`相同的地方,这是读写 (3认同)