Arrays 从perl中的子例程返回数组并在另一个子例程中使用
嗨,我正在努力学习Perl。我在创建数组并在另一个子例程中使用引用时遇到问题 示例代码:Arrays 从perl中的子例程返回数组并在另一个子例程中使用,arrays,perl,reference,subroutine,Arrays,Perl,Reference,Subroutine,嗨,我正在努力学习Perl。我在创建数组并在另一个子例程中使用引用时遇到问题 示例代码: #!/usr/bin/perl use strict; use warnings; sub test { my @a = ("a","b","c"); return \@a; } # code just for test, the reference would just be used in next subroutine my $array = test(); my @arr =
#!/usr/bin/perl
use strict;
use warnings;
sub test {
my @a = ("a","b","c");
return \@a;
}
# code just for test, the reference would just be used in next subroutine
my $array = test();
my @arr = @array;
print "@arr\n"; # just for test
test2(@arr);
sub test2 {
my @array1 = @_;
foreach $values (@array1) {
# do things
}
}
重点是使用第二个子系统中第一个子系统的数组
-----------------V2-------------------------
#!/usr/bin/perl
use strict;
use warnings;
test();
sub test {
my @a = ("a","b","c");
return \@a;
}
print "\@a\n";
test2(\@a);
sub test2 { (my $array1) = @_;
foreach my $values (@array1) {
print "$values\n";
}
}
@array
与$array
是完全不同的变量。要取消引用$array
,请使用@$array
(请参阅)
将引用传递给test2会更有效,因此:
test2($array);
sub test2 {
my ($array1) = @_;
foreach $values (@$array1) {
my@=
是一个语法错误。您包含语法错误my@=
的事实表明您没有粘贴到您测试的实际代码中。这意味着在你的问题上我们不能相信其他任何东西。看起来问题在于@array
和$array
之间的混淆-但这可能只是一个打字错误。要求我们调试您甚至还没有运行的代码是不礼貌的。在进一步调查中,我注意到此代码也无法运行,因为您有使用strict
,但您没有声明@array
。因此,运行此程序将导致致命错误。在这一点上,你似乎并不真的关心这个问题的解决方案,而我正继续帮助其他人。对不起,戴夫,只是一个打字错误。在没有GUI的虚拟机上运行代码,这样就可以复制过去。我不确定我是否理解正确。我在第一个下发布了一个新的尝试。