5

我试图理解别人的 Perl 代码,但我自己却不了解 Perl。我会很感激你的帮助。

我遇到过这样的 Perl 函数:

MyFunction($arg1,$arg2__size,$arg3)

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

4

7 回答 7

11

在 perl 变量名中使用 __ 没有特定含义。这可能是程序员的偏好,尤其是在您在问题中引用的情况下。您可以在此处查看有关 perl 变量命名的更多信息。

于 2008-09-19T15:09:46.150 回答
11

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

但是你确定是 Perl 吗?变量上没有任何符号。您可以发布更多上下文吗?

于 2008-09-19T15:24:41.217 回答
2

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

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

于 2008-09-19T15:28:45.450 回答
2

在您的问题的上下文中,双下划线没有任何程序意义。双下划线对于 Perl 中有限数量的值确实意味着一些特殊的东西,尤其是__FILE__& __LINE__。这些是不以印记 ( $,%@) 为前缀的特殊文字,仅在引号之外插入。它们包含当前执行文件的完整路径和名称以及正在执行的行。请参阅perldata中的“特殊文字”部分或Perl Monks 上的这篇文章

于 2008-09-19T17:35:16.627 回答
1

我相当肯定 arg2__size 只是一个变量的名称。

于 2008-09-19T15:04:15.303 回答
1

马克的回答当然是正确的,没有什么特殊含义。

但我想指出,您的示例根本不像 Perl。Perl 变量不是空话。正如您从上面的链接中看到的那样,他们有印记。Perl 没有“函数”,它有子程序。

因此,对于我们谈论的是哪种语言,可能会有一些混淆。

于 2008-09-19T22:52:56.130 回答
-1

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

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

——比努

于 2009-06-09T04:58:01.343 回答