Perl变量名前面的 * 是什么意思?

qni6mghb  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(248)

下面的Perl语句是什么意思?

*INPUT_DATA                    =\ 0;

我检查了一些Perl文档站点,比如https://perldoc.perl.org/variables,但是我找不到类似的例子。

w46czmvw

w46czmvw1#

简而言之,*表示一个“typeglob”,它是一个内部类型,保存了给定名称的所有全局变量的值。
有关typeglob的说明,请参见perldata,还可以参见本页末尾推荐的链接,即perlvarperlrefperlsubperlmod

rdrgkggo

rdrgkggo2#

它创建了一个名为$INPUT_DATA的只读变量,其值为0

*INPUT_DATA = \0;

基本上相当于

use Readonly;
 
Readonly::Scalar $INPUT_DATA => 0;

这是通过操作符号表来完成的。
*表示一个glob,也称为typeglob,它基本上是一个C结构体,包含每种类型的变量(标量、数组、代码、glob、文件句柄、目录句柄、格式等)。符号表是一个glob树。

相关问题