Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用*vs定义的Perl变量$_Perl_Variables - Fatal编程技术网

用*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

您最近不太可能遇到最后两个问题,因为自从Perl 5.0发布以来,在调用子例程时不需要
&
。typeglobs是一种特殊类型,它包含所有其他类型,并且很少使用


我正在考虑深入到这一切的程度,但我的答案暂时不变。根据出现的注释,我可能会写得更多。

此外,您几乎肯定是想使用
my
而不是
local
。需要注意的是,typeglob是特定于包作用域变量的,使用
my
声明的变量不会有关联的typeglob或符号表条目。与此相关的文档非常密集,作为参考材料比介绍材料更有用。我推荐Bruce Gray的演讲,因为它帮助我理解了包变量是Perl的历史产物,以及它们继续有用的特定情况(例如导入)。嘿,谢谢!我以前从未见过typeglob,所以我很难自己找到答案。。。