我有classA,我在classA中定义了一个全局数组
our @myArray = {"1","2","3","4"}
我有classB,其中有一个classA对象。我尝试按如下方式访问myArray。
$my_obj_of_classA->{'myArray'}
$my_obj_of_classA->{'\@myArray'}
$my_obj_of_classA->{\@myArray}
这些都不起作用。我收到一个错误说:
全局符号“@my_array”需要显式包名称
答案 0 :(得分:4)
首先,这个:
package classA;
...
our @myArray = {"1","2","3","4"}
声明一个包(有时称为全局)变量@classA :: myArray,包含一个值为hashref的元素。我怀疑你的意思是:
our @myArray = ("1","2","3","4");
其次,您可以通过将其完全限定为@classA::myArray
来从任何其他包访问该数组。 Perl不提供与全局变量交互的自动可用类或对象方法。如果您愿意,您可以在课堂上创建一个,只需说:
sub myArray { \@myArray }
如果您希望它获取对数组的引用或
sub myArray { @myArray }
如果你想要它(在列表上下文中)来获取数组的元素。
答案 1 :(得分:0)
这意味着@my_array
未定义为全局变量。由于您尚未发布实际代码,因此我无法提供更多信息。当然,这根本不提供任何信息,因为它只是告诉你错误消息告诉你的内容。
如果你提出问题,我会改进我的答案。