1

我在 perl 方面没有太多练习,但我记得从前你可以在一行中获取函数返回的数组的一些元素,从而节省时间和代码,因为不要先将内容保存到临时数组只是为了使用他们的几个元素。

例如

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

甚至

($a)=(split(/:/, "stack:over:flow"))[2];
print $a # prints "flow"

假设我只对输出的第二个和第三个元素(“over”和“flow”)感兴趣split。我可以做类似的事情吗

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

3 回答 3

3

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

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

其他注意事项:

于 2013-11-07T09:23:59.623 回答
2

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

my (undef, $over, $flow) = split /:/, 'stack:over:flow';
于 2013-11-07T09:29:02.880 回答
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";
于 2013-11-07T09:29:05.820 回答