我正在尝试将对数组的引用和字符串传递给表单中的函数;
&function2(\g_array, "String");
在我的子例程中,我想尊重数组,以便我可以评估/打印它,但是当我尝试这样做时,它抱怨我在使用严格时无法将字符串映射到数组。最好的方法是什么?
我正在尝试将对数组的引用和字符串传递给表单中的函数;
&function2(\g_array, "String");
在我的子例程中,我想尊重数组,以便我可以评估/打印它,但是当我尝试这样做时,它抱怨我在使用严格时无法将字符串映射到数组。最好的方法是什么?
您忘记use strict
了当前范围。它会警告你:bareword "g_array" not allowed
.
如果g_array
是一个函数,则\g_array
解析为\(g_array())
. 如果不是,则解析为\"g_array"
. 因此,您实际上是在传递对字符串的引用。
你想要的是传递一个arrayref?只需@
在变量中包含符号:
function2(\@g_array, "String");
如果您使用strict
,您应该始终这样做,您会看到此错误:
使用“strict subs”时不允许使用裸词“g_array”
这意味着:g_array
,没有印记,是一个“裸词”。如果没有打开限制,裸词只会变成字符串。(假设它们不是函数的名称。)您所做的是引用字符串"g_array"
。
要引用数组,请使用\@g_array
.
&
此外,除非您知道为什么应该使用,否则通常没有理由在函数名称前使用。