我试图理解别人的 Perl 代码,但我自己却不了解 Perl。我会很感激你的帮助。
我遇到过这样的 Perl 函数:
MyFunction($arg1,$arg2__size,$arg3)
中的双下划线语法是否有意义$arg2
,或者它只是第二个参数名称的一部分?
在 perl 变量名中使用 __ 没有特定含义。这可能是程序员的偏好,尤其是在您在问题中引用的情况下。您可以在此处查看有关 perl 变量命名的更多信息。
在大多数语言中,下划线只是标识符的一部分;没有特别的意义。
但是你确定是 Perl 吗?变量上没有任何符号。您可以发布更多上下文吗?
就解释器而言,下划线只是标识符中允许的另一个字符。它可以用作连接或驼峰式大小写的替代方法,以形成多字标识符。
前导下划线通常用于表示标识符仅供本地使用,例如用于模块的非导出部分。这只是一个约定;口译员不在乎。
在您的问题的上下文中,双下划线没有任何程序意义。双下划线对于 Perl 中有限数量的值确实意味着一些特殊的东西,尤其是__FILE__
& __LINE__
。这些是不以印记 ( $
,%
或@
) 为前缀的特殊文字,仅在引号之外插入。它们包含当前执行文件的完整路径和名称以及正在执行的行。请参阅perldata中的“特殊文字”部分或Perl Monks 上的这篇文章
我相当肯定 arg2__size 只是一个变量的名称。
马克的回答当然是正确的,没有什么特殊含义。
但我想指出,您的示例根本不像 Perl。Perl 变量不是空话。正如您从上面的链接中看到的那样,他们有印记。Perl 没有“函数”,它有子程序。
因此,对于我们谈论的是哪种语言,可能会有一些混淆。
您需要告诉解释器“$arg2”是变量的名称。而不是“$arg2__size”。为此,您将需要使用括号。(这种用法类似于在 shell 中看到的)。
这应该工作 MyFunction($arg1,${arg2}__size,$arg3)
——比努