是否可以推送到Perl中的数组引用?谷歌已经建议我首先尊重阵列,但这并不真正有效。它推送到引用的数组,而不是引用的数组。
例如,
my @a = (); my $a_ref = [@a]; push(@$a_ref,"hello"); print $a[0];
@a将不会更新,并且该代码将失败,因为该数组仍为空
(我还在学习Perl参考,所以这可能是一个非常简单的问题,如果是这样的话)
解决方法
这可能有助于考虑内存地址而不是变量名称。
my @a = (); # Set aside memory address 123 for a list. my $a_ref = [@a]; # Square brackets set aside memory address 456. # @a COPIES the stuff from address 123 to 456. push(@$a_ref,"hello"); # Push a string into address 456. print $a[0]; # Print address 123.
字符串进入不同的内存位置。
而是将$ a_ref变量指向列表@a的内存位置。推动影响存储器位置123.由于@a还指存储器位置123,其值也改变。
my $a_ref = \@a; # Point $a_ref to address 123. push(@$a_ref,"hello"); # Push a string into address 123. print $a[0]; # Print address 123.