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