Perl中的双下划线是什么?
我试图了解别人的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)
-比努