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

时间:2013-11-07 09:18:58

标签: 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"

假设我只对split的输出中的第二个和第三个元素(“over”和“flow”)感兴趣。 我可以做点什么吗

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

3 个答案:

答案 0 :(得分:3)

几乎。请记住,数组是零索引的。

my ( $first, $second ) = ( split /:/, "stack:over:flow" )[1,2];

其他注意事项:

答案 1 :(得分:2)

您还可以将undef分配给您不感兴趣的任何内容:

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

答案 2 :(得分:0)

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

  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";