是";我的";Perl中的函数?

是";我的";Perl中的函数?,perl,Perl,我知道my用于声明块或文件的局部变量。我一直认为my是Perl中的一个关键字。但我刚刚被告知这实际上是一个函数。其中一个证明是perldoc将my放在“函数”部分下,请参阅 函数是如何声明局部变量的?my不是一个函数,它只是与函数(在perl文档中)组合在一起,因为它的工作方式与函数类似 如果你看,它说 下面是Perl的函数(包括看起来像函数的东西,比如一些关键字和命名运算符)按类别排列 然后再低一点 与范围界定相关的关键词 呼叫方,导入,本地,我的,我们的,包,状态,使用 具体来说,请注意此处

我知道
my
用于声明块或文件的局部变量。我一直认为
my
是Perl中的一个关键字。但我刚刚被告知这实际上是一个函数。其中一个证明是
perldoc
my
放在“函数”部分下,请参阅

函数是如何声明局部变量的?

my
不是一个函数,它只是与函数(在perl文档中)组合在一起,因为它的工作方式与函数类似

如果你看,它说

下面是Perl的函数(包括看起来像函数的东西,比如一些关键字和命名运算符)按类别排列

然后再低一点

与范围界定相关的关键词
呼叫方
导入
本地
我的
我们的
状态
使用

具体来说,请注意此处使用的是“关键字”而不是“函数”

因此,这意味着您将在下面找到一些非函数(例如关键字)

另一种说法是:如果perldoc中的“函数”下列出了某个对象,那么它不一定是一个函数——它可以是一个关键字或命名运算符,其作用类似于函数。

是的,根据Perl(非常独特)的定义,
my
是一个函数。的开头段落定义了“功能”:

本节中的函数可以用作表达式中的术语。它们分为两大类:列表运算符和命名一元运算符

my
是一个命名运算符。但它在两个方面很特别:

  • 除了像函数一样运行(分配新变量并返回该变量),它还具有编译时效果
  • my…
    是一元运算符,但在使用参数时,它可以接受多个参数

另一方面,如果你问
my
是否是C定义的函数,那么答案是否定的
my
不是C函数。无论是
print
open
chr
,都不是。perlfunc中的所有内容都是一个操作符;它们都不是函数


最后,
print
open
chr
my
更接近人们对函数的概念。更确切地说,很少有人会认为<代码>我的<代码>是一个函数。这更像是一个技术性的问题,而不是任何有意义的问题,因为它符合perfunc对功能的定义


另见:


这个参数意义不大,
import
(一个特殊的子例程)和
qr
(一个操作符)也列在那里。@daxim这本书也说
my
是一个函数,但没有给出太多解释。那本书也错了<代码>我的绝对不是一个函数。你怎么称呼它重要吗?请注意,
local
这个词在Perl中也有特殊的含义:)@briandfoy我不在乎如何称呼它。但如果它是一个函数,我想知道它是如何工作的。既然不是,那我就没问题了。嗯,我以为调用者是一个函数。至少它的行为像一个函数,而不像一个关键字/运算符。@Dallaylaen,嘿,perldoc的话,不是我的:)。但我同意
调用者的行为更像一个function.Re“这意味着您将在Perl函数a-Z下找到一些非函数(例如关键字)”。它们都是命名运算符(如页面第二句所述),这意味着它们都是关键字。(好吧,它们可以是保留字,但Perl没有。)