子接收时数组引用为空
Array ref empty when received by a sub
我正在尝试通过引用访问数组元素,将引用传递给子项。这是我的代码片段:
my @arr1 = (1,2);
my @arr2 = (3,4);
my @arr3;
push @arr3, \@arr1;
push @arr3, \@arr2;
for my $i (@arr3) {
print "$i\n";
}
print "Entered Sub func()\n";
for my $i (@arr3) {
func($i);
}
sub func{
my $par = shift;
print $par."\n";
}
print "------------------------\n";
for my $elem(@$par) {
print $elem."\n";
}
这是输出:
C:\Users\ag194y>perl arrs.pl
ARRAY(0x357b28)
ARRAY(0x3575e8)
Entered Sub func()
ARRAY(0x357b28)
ARRAY(0x3575e8)
------------------------
C:\Users\ag194y>
我原本希望使用子中的 for 循环访问 @arr1 和 a@rr2 的元素,但看起来数组引用是空的。我究竟做错了什么?非常感谢。
我认为问题在于,循环在 func
之外。您正在调用 func
两次,并且仅在此之后您才循环访问当时未定义的 $par
。
您可能正在寻找类似的东西:
sub func{
my $par = shift;
print $par."\n";
print "------------------------\n";
for my $elem (@$par){
print $elem."\n";
}
}
我正在尝试通过引用访问数组元素,将引用传递给子项。这是我的代码片段:
my @arr1 = (1,2);
my @arr2 = (3,4);
my @arr3;
push @arr3, \@arr1;
push @arr3, \@arr2;
for my $i (@arr3) {
print "$i\n";
}
print "Entered Sub func()\n";
for my $i (@arr3) {
func($i);
}
sub func{
my $par = shift;
print $par."\n";
}
print "------------------------\n";
for my $elem(@$par) {
print $elem."\n";
}
这是输出:
C:\Users\ag194y>perl arrs.pl
ARRAY(0x357b28)
ARRAY(0x3575e8)
Entered Sub func()
ARRAY(0x357b28)
ARRAY(0x3575e8)
------------------------
C:\Users\ag194y>
我原本希望使用子中的 for 循环访问 @arr1 和 a@rr2 的元素,但看起来数组引用是空的。我究竟做错了什么?非常感谢。
我认为问题在于,循环在 func
之外。您正在调用 func
两次,并且仅在此之后您才循环访问当时未定义的 $par
。
您可能正在寻找类似的东西:
sub func{
my $par = shift;
print $par."\n";
print "------------------------\n";
for my $elem (@$par){
print $elem."\n";
}
}