用*vs定义的Perl变量$
用*和$定义变量有什么区别?例如:用*vs定义的Perl变量$,perl,variables,Perl,Variables,用*和$定义变量有什么区别?例如: local $var; local *var; $var是一个标量*var是一个类型glob 严格来说,这不是一个变量。你一般不应该使用它 初始字符称为a,表示标识符表示的值的类型。你会知道他们中的大多数。这是一张单子 美元$是一个标量值 符号处的@是一个数组值 百分比%是一个哈希值 符号&是一个代码值 星号*是一个类型glob 您最近不太可能遇到最后两个问题,因为自从Perl 5.0发布以来,在调用子例程时不需要&。typeglobs是一种特殊类型,它
local $var;
local *var;
$var
是一个标量<代码>*var是一个类型glob
严格来说,这不是一个变量。你一般不应该使用它 初始字符称为a,表示标识符表示的值的类型。你会知道他们中的大多数。这是一张单子
- 美元
是一个标量值$
- 符号处的
是一个数组值@
- 百分比
是一个哈希值%
- 符号
是一个代码值&
- 星号
是一个类型glob*
&
。typeglobs是一种特殊类型,它包含所有其他类型,并且很少使用
我正在考虑深入到这一切的程度,但我的答案暂时不变。根据出现的注释,我可能会写得更多。此外,您几乎肯定是想使用
my
而不是local
。需要注意的是,typeglob是特定于包作用域变量的,使用my
声明的变量不会有关联的typeglob或符号表条目。与此相关的文档非常密集,作为参考材料比介绍材料更有用。我推荐Bruce Gray的演讲,因为它帮助我理解了包变量是Perl的历史产物,以及它们继续有用的特定情况(例如导入)。嘿,谢谢!我以前从未见过typeglob,所以我很难自己找到答案。。。