好的,所以我得到了一个数组(AoA)数组,我需要将它传递给子程序,然后访问它。这有效......但它是否严格正确,确实有更好的方法可以做到这一点吗?
#!/usr/bin/perl
$a = "deep";
push(@b,$a);
push(@c,\@b);
print "c = @{$c[0]}\n";
&test(\@c);
sub test
{
$d = $_[0];
print "sub c = @{$$d[0]}\n";
}
由于
答案 0 :(得分:3)
最好的方法是use strict;
和use warnings;
并在使用之前声明变量。
此外,您知道为您的变量a
或b
命名是不好的做法 - 给它们提供有意义的名称,特别是因为例如$a
变量是由编译器定义的(与sort {} @
一起使用的那个)。
答案 1 :(得分:1)
use strict; # Always!
use warnings; # Always!
sub test {
my ($d) = @_;
print "$d->[0][0]\n";
# Or to print all the deep elements.
for my $d2 (@$d) {
for (@$d2) {
print "$_\n";
}
}
}
{
my $a = "deep"; # or: my @c = [ [ "deep" ] ];
my @b;
my @c;
push(@b,$a);
push(@c,\@b);
test(\@c); # Can't pass arrays per say, just refs. You had this right.
}
还需要更好的名字。特别是,应避免使用$a
和$b
,因为它们可能会干扰sort
。