【发布时间】:2017-04-10 23:11:47
【问题描述】:
嗨,我正在努力学习 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 = @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";
}
}
【问题讨论】:
-
my @ =是语法错误。 -
您已包含语法错误
my @ =的事实表明您尚未粘贴您测试过的实际代码。这意味着我们不能相信您的问题中的任何其他内容。看起来问题在于@array和$array之间的混淆——但这可能只是一个错字。要求我们调试你甚至没有运行过的代码是不尊重的。 -
经过进一步调查,我注意到此代码也无法运行,因为您有
use strict但您没有声明@array。所以运行这个程序会报一个致命错误。在这一点上,您似乎并不真正关心如何解决这个问题,而我正在继续帮助其他人。 -
对不起,戴夫,只是一个错字。在没有 GUI 的 VM 上运行代码,因此可以复制过去。
标签: arrays perl reference subroutine