Alc*_*sta 17 arrays perl reference
我有一个结构成员的数组:
$self->{myArray} = ["value1", "value2"];
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下代码迭代它:
my @myArray = $self->{myArray};
foreach my $foo (@myArray){
#Do something with the using $foo
...
}
Run Code Online (Sandbox Code Playgroud)
问题是'foreach'循环只执行一次(当我希望它执行两次时,因为@myArray有两个元素:"value1"和"value2").
当我检查@myArray数组大小时,我得到它的大小为1.我在这段代码中做错了什么?
cho*_*ida 28
我相信:
$self->{myArray} returns a reference.
Run Code Online (Sandbox Code Playgroud)
您想要返回数组:
@{$self->{myArray}}
Run Code Online (Sandbox Code Playgroud)
FMc*_*FMc 10
$self->{myArray}
是一个数组引用.你需要取消引用它.
my @myArray = @{ $self->{myArray} };
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该Data::Dumper
模块非常有用.例如,如果@myArray
行为不符合预期,您可以运行此代码来揭示问题.
use Data::Dumper;
print Dumper(\@myArray);
Run Code Online (Sandbox Code Playgroud)
$ self - > {myArray}是一个数组引用,而不是一个数组 - 你不能将实际数组存储在哈希中,只能引用.试试这个:
my $myArray = $self->{myArray};
for my $foo (@$myArray){
# do something with $foo
}
Run Code Online (Sandbox Code Playgroud)
您也可以查看perldoc perlref.
归档时间: |
|
查看次数: |
22235 次 |
最近记录: |