Perl 子系统接收到数组ref时为空
我正在尝试通过引用访问数组的元素,将引用传递到sub。以下是我的代码片段:Perl 子系统接收到数组ref时为空,perl,arrayref,Perl,Arrayref,我正在尝试通过引用访问数组的元素,将引用传递到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 $pa
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>
我希望访问@arr1和a@rr2在子循环中使用for循环,但看起来数组引用为空。我做错了什么?非常感谢。我认为问题在于,循环超出了函数的范围。您要调用func两次,然后才循环使用$par,这在当时是未定义的 您可能正在寻找以下内容:
sub func{
my $par = shift;
print $par."\n";
print "------------------------\n";
for my $elem (@$par){
print $elem."\n";
}
}
您的sub中没有for循环。如果您使用了use strict;使用警告;,perl会告诉你的。事实上,总是使用strict;使用警告qw all;!我们最近看到的所有格式错误的代码是什么?我已经给你修好了,不过下次请你自己修。