我知道它my
用于声明块或文件的本地变量。我一直认为这my
是 Perl 中的一个关键字。但我只是被告知它实际上是一个函数。其中一个证明是perldoc
放在my
“函数”部分下,请参阅http://perldoc.perl.org/functions/my.html。
函数如何完成声明局部变量的工作?
我知道它my
用于声明块或文件的本地变量。我一直认为这my
是 Perl 中的一个关键字。但我只是被告知它实际上是一个函数。其中一个证明是perldoc
放在my
“函数”部分下,请参阅http://perldoc.perl.org/functions/my.html。
函数如何完成声明局部变量的工作?
my
不是函数,它只是与函数(在 perl 文档中)聚集在一起,因为它像函数一样工作。
如果你看perldoc perlfunc
,据说,
以下是按类别排列的 Perl 函数(包括看起来像函数的东西,如一些关键字和命名运算符)...
然后稍微低于那个
与作用域相关的关键字
caller
,import
,local
,my
,our
,package
,state
,use
具体来说,请注意这里使用了“关键字”这个词而不是“功能”</p>
这意味着您会在Perl 函数 AZ下找到一些非函数(例如关键字)
另一种说法是:如果某些东西列在 perldoc 的“函数”下,它不一定是函数——它可以是关键字或命名运算符,其作用类似于函数。
是的,根据 Perl 的(非常独特的)定义,my
是一个函数。perlfunc的开头段落定义了“函数”:
本节中的函数可以用作表达式中的项。它们分为两大类:列表运算符和命名一元运算符。
my
是一个命名运算符。但它有两个特别之处:
my ...
是一元运算符,但在使用括号时它可以接受多个参数。另一方面,如果你被问到是否my
是 C 定义的函数,那么不是。my
不是 C 函数。print
, open
,等也不是chr
。 perlfunc 中的所有内容都是运算符;它们都不是函数。
最后,print
和open
比chr
更接近人对函数的概念my
。更准确地说,很少有人会认为my
是一个函数。与 perfunc 对功能的定义相匹配,它更多的是一种技术性,而不是任何有意义的东西。
也可以看看: