Perl 从函数返回的数组中获取元素的特定子集

Perl 从函数返回的数组中获取元素的特定子集,perl,Perl,我在perl方面没有太多的实践,但我记得在我以前的日子里,可以在一行中获取函数返回的数组的一些元素,这样可以节省时间和代码,而不必为了使用它们的几个元素而先将内容保存到临时数组中 比如说 ($a,$b,$c)=split(/:/, "stack:over:flow"); print "$b $c" # prints "over flow" 甚至 ($a)=(split(/:/, "stack:over:flow"))[2]; print $a # prints "flow" 假设我只对sp

我在perl方面没有太多的实践,但我记得在我以前的日子里,可以在一行中获取函数返回的数组的一些元素,这样可以节省时间和代码,而不必为了使用它们的几个元素而先将内容保存到临时数组中

比如说

($a,$b,$c)=split(/:/, "stack:over:flow"); 
print "$b $c" # prints "over flow"
甚至

($a)=(split(/:/, "stack:over:flow"))[2];
print $a # prints "flow"
假设我只对
split
输出的第二和第三个元素(“over”和“flow”)感兴趣。 我能做点像这样的事吗

($a,$b)=(split(/:/, "stack:over:flow"))[2,3];

差不多。请记住,数组是零索引的

my ( $first, $second ) = ( split /:/, "stack:over:flow" )[1,2];
其他需要注意的事项:

  • 避免使用
    $a
    $b
    作为变量名。它们是用于
    排序
    块内部的特殊包变量

  • 差不多了。请记住,数组是零索引的

    my ( $first, $second ) = ( split /:/, "stack:over:flow" )[1,2];
    
    其他需要注意的事项:

    • 避免使用
      $a
      $b
      作为变量名。它们是用于
      排序
      块内部的特殊包变量
    您还可以分配给您不感兴趣的任何内容:

    my (undef, $over, $flow) = split /:/, 'stack:over:flow';
    
    您还可以分配给您不感兴趣的任何内容:

    my (undef, $over, $flow) = split /:/, 'stack:over:flow';
    

    嗯,是的,你可以得到它,因为有一种方法可以通过索引对数组进行切片。 这里列出一个可以运行的脚本

      1 #!/usr/bin/perl
      2 use strict;
      3 use warnings;
      4
      5 my $text = "first:second:third";
      6 my @array = split(':', $text);
      7 my @new_array = @array[1, 2];
      8 print "@new_array\n";
    

    嗯,是的,你可以得到它,因为有一种方法可以通过索引对数组进行切片。 这里列出一个可以运行的脚本

      1 #!/usr/bin/perl
      2 use strict;
      3 use warnings;
      4
      5 my $text = "first:second:third";
      6 my @array = split(':', $text);
      7 my @new_array = @array[1, 2];
      8 print "@new_array\n";