Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中将数组扩展到参数列表_Perl_Arguments_Perl Module - Fatal编程技术网

在perl中将数组扩展到参数列表

在perl中将数组扩展到参数列表,perl,arguments,perl-module,Perl,Arguments,Perl Module,我有如下代码 my @array = ["hello","hi","fish"]; sub this_sub { my $first = $_[0]; my $second = $_[1]; my $third = $_[2]; } this_sub(@array); 如何使数组展开为参数列表,以便 第一个、第二个和第三个将从数组中的字符串中获取值。如下图所示 first=“你好” second=“嗨” 第三个“鱼” 您的代码错误。要将列表指定给数组,请将其括在普通括号中: my

我有如下代码

my @array = ["hello","hi","fish"];
sub this_sub {
  my $first = $_[0];
  my $second = $_[1];
  my $third = $_[2];
}
this_sub(@array);
如何使数组展开为参数列表,以便 第一个、第二个和第三个将从数组中的字符串中获取值。如下图所示

  • first=“你好”
  • second=“嗨”
  • 第三个“鱼”

    • 您的代码错误。要将列表指定给数组,请将其括在普通括号中:

      my @array = ("hello", "hi", "fish");
      
      方括号定义匿名数组,即列表的引用,它是标量:

      my $array_ref = ["hello", "hi", "fish"];
      
      如果要发送引用,必须在子目录中取消引用:

      sub this_sub {
          my ($first, $second, $third) = @{ $_[0] };
      }
      

      你的代码错了。要将列表指定给数组,请将其括在普通括号中:

      my @array = ("hello", "hi", "fish");
      
      方括号定义匿名数组,即列表的引用,它是标量:

      my $array_ref = ["hello", "hi", "fish"];
      
      如果要发送引用,必须在子目录中取消引用:

      sub this_sub {
          my ($first, $second, $third) = @{ $_[0] };
      }
      

      有时,将数组扩展到参数列表中是有益的,因为通常无法访问相关的子例程。这是我的解决办法

      sub test_sub($$$) {
          my ($a,$b,$c) = @_;
          say "$a $b $c";
      }
      my @array = ('happy', 'birthday', 'to you');
      my $eval_str = 'test_sub(' join ', ', @array . ')';
      eval $eval_str;
      

      这有点难看,希望其他人可以建议改进版本。

      有时,能够将数组扩展到参数列表中是有益的,因为人们通常无法访问所讨论的子例程。这是我的解决办法

      sub test_sub($$$) {
          my ($a,$b,$c) = @_;
          say "$a $b $c";
      }
      my @array = ('happy', 'birthday', 'to you');
      my $eval_str = 'test_sub(' join ', ', @array . ')';
      eval $eval_str;
      

      它有点难看,希望其他人能建议改进版本。

      这非常有用,我会尝试一下,很快就会回来!这是非常有益的,我会尝试一下,很快回来!事实是,除非你摆弄原型,否则你无法阻止数组扩展成参数列表。哇!perl的mysub(a、b、c)与mysub@mylist完全相同。太神了这太酷了。事实是,除非你摆弄原型,否则你无法阻止数组扩展到参数列表中。哇!perl的mysub(a、b、c)与mysub@mylist完全相同。太神了这太酷了。