0

我正在尝试将对数组的引用和字符串传递给表单中的函数;

&function2(\g_array, "String");

在我的子例程中,我想尊重数组,以便我可以评估/打印它,但是当我尝试这样做时,它抱怨我在使用严格时无法将字符串映射到数组。最好的方法是什么?

4

2 回答 2

3

您忘记use strict了当前范围。它会警告你:bareword "g_array" not allowed.

如果g_array是一个函数,则\g_array解析为\(g_array()). 如果不是,则解析为\"g_array". 因此,您实际上是在传递对字符串的引用。

你想要的是传递一个arrayref?只需@在变量中包含符号:

function2(\@g_array, "String");
于 2013-05-13T21:47:12.380 回答
3

如果您使用strict,您应该始终这样做,您会看到此错误:

使用“strict subs”时不允许使用裸词“g_array”

这意味着:g_array,没有印记,是一个“裸词”。如果没有打开限制,裸词只会变成字符串。(假设它们不是函数的名称。)您所做的是引用字符串"g_array"

要引用数组,请使用\@g_array.

&此外,除非您知道为什么应该使用,否则通常没有理由在函数名称前使用。

于 2013-05-13T21:47:30.113 回答