arrays - 将数组传递给子例程 Perl

标签 arrays perl

我目前正在学习 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/

相关文章:

javascript - ES6 剩余参数参数示例

javascript - 遍历 JSON 和渲染表元素没有结果

javascript - jQuery:打印数组中一组重复对象中的第一个对象

sql - perl 函数 dbh->quote 仍然安全吗?

perl - 在单独的 git 存储库中维护/测试(moSTLy Perl)软件且它们之间存在依赖关系的最佳实践是什么?

regex - 解析 git status 日志,如果修改的文件来自给定目录则退出

perl - 为什么 POSIX 与 Win32 一起使用 floor() 抛出警告?

Java比较方法为Circular Look磁盘算法对数组进行排序

Java在一种方法中使用两个可变参数

perl - 在perl中异步写入文件