Perl中的双下划线是什么?

时间:2020-03-06 14:26:23  来源:igfitidea点击:

我试图了解别人的Perl代码,而自己却不了解。多谢协助。

我在以下方面遇到了Perl函数:

MyFunction($arg1,$arg2__size,$arg3)

$ arg2`中的双下划线语法是否有意义,或者它只是第二个参数名称的一部分?

解决方案

我相当确定arg2__size只是变量的名称。

在perl变量名称中使用__没有特殊含义。这可能是程序员的偏爱,特别是在我们在问题中引用的情况下。我们可以在此处查看有关perl变量命名的更多信息。

与大多数语言一样,下划线只是标识符的一部分;没有特别的意思。

但是我们确定它是Perl吗?变量上没有任何信号。我们可以发布更多背景信息吗?

就解释器而言,下划线只是标识符中允许的另一个字符。它可以用作串联或者驼峰式大小写的替代形式,以形成多字标识符。

前划线通常用于表示标识符仅用于本地使用,例如用于模块的未导出零件。这只是一个约定;口译员不在乎。

就问题而言,双下划线没有任何程序上的意义。双下划线确实意味着Perl中有限数量的值的特殊之处,最著名的是__FILE____LINE__。这些是特殊字面量,不带符号($或者@)前缀,并且仅在引号之外进行内插。它们包含当前正在执行的文件的完整路径和名称以及正在执行的行。请参阅perldata中的"特殊文字"部分,或者Perl Monks上的此帖子

马克的答案当然是正确的,没有特殊意义。

但我想指出的是,示例根本不像Perl。 Perl变量不是空话。正如我们从上面的链接中看到的那样,它们有信号。 Perl没有"功能",它具有子例程。

因此,我们在谈论哪种语言可能会有些混乱。

我们将需要告诉解释器" $ arg2"是变量的名称。而不是" $ arg2__size"。为此,我们将需要使用括号。 (这种用法类似于在shell中看到的用法)。

这应该工作
MyFunction($ arg1,$ {arg2} __ size,$ arg3)

-比努