Perl Access全局数组

时间:2011-07-11 23:01:56

标签: perl

我有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”需要显式包名称

2 个答案:

答案 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未定义为全局变量。由于您尚未发布实际代码,因此我无法提供更多信息。当然,这根本不提供任何信息,因为它只是告诉你错误消息告诉你的内容。

如果你提出问题,我会改进我的答案。