忽略func输出中列表的一部分。打电话给Perl

时间:2012-09-11 23:13:27

标签: perl

我想只捕获Perl中函数的部分列表输出。

我认为这些线路可以做到这一点,但他们没有。

E.g。捕获列表的最后一个元素:

(, $my_var)  = split(/_/,$sample_string); 

E.g。捕获列表的第二个元素:

(, $my_var, , ,)  = split(/_/,$sample_string);

这在Perl中是否可行?

3 个答案:

答案 0 :(得分:3)

另一种解决方案:将不需要的元素分配给undef

(undef, $my_var)  = split(/_/,$sample_string); 

答案 1 :(得分:2)

返回数组的第二个元素:

my $second_element = (split(/_/,$sample_string))[1];

答案 2 :(得分:2)

为什么在只需要找到两个下划线时找到所有下划线?

my ($last_element)   = $sample_string =~ /([^_]*)\z/;
my ($second_element) = $sample_string =~ /_([^_]*)_/;

更一般地说,列表切片会:

my $last_element   = ( split(/_/, $sample_string) )[-1];
my $second_element = ( split(/_/, $sample_string) )[1];
my @some           = ( split(/_/, $sample_string) )[2,3];

但最接近你要求的是占位符:

my (undef, $second_element) = split(/_/, $sample_string);