我目前正在学习 Perl,我想将一个数组传递给子例程并打印其内容。我发现应该传递对数组的引用,但是我遗漏了一些东西:
arrayPrint($a,$b,\@array);
sub arrayPrint{
my ($a,$b,@array) = @_;
for(my $i=0; $i<=$#array;$i++){
print $file $a.$b.$array[i]."\n";
}
}
最佳答案
您不能将数组(或散列)传递给 subs。您只能将标量传递给潜艇。 (而且它们只能返回标量。)
我们可以做的是传递对数组(或散列)的引用。引用是标量。事实上,这就是您正在做的事情。
问题在于您将其分配给一个数组。总是只包含一个标量的数组只会让事情变得更复杂。它应该分配给一个标量。它应该是treated as a reference .
sub arrayPrint {
my ( $x, $y, $array ) = @_;
for my $e ( @$array ) {
say $fh "$x$y$e";
}
}
arrayPrint( $x, $y, \@array );
另一种方法是将数组的每个元素传递给 sub。
sub arrayPrint {
my ( $x, $y, @array ) = @_;
for my $e ( @array ) {
say $fh "$x$y$e";
}
}
arrayPrint( $x, $y, @array );
或
sub arrayPrint {
my $x = shift;
my $y = shift;
for my $e ( @_ ) {
say $fh "$x$y$e";
}
}
arrayPrint( $x, $y, @array );
关于arrays - 将数组传递给子例程 Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72380485/