【发布时间】:2013-12-18 20:18:24
【问题描述】:
我只想捕获 Perl 中函数输出的列表的一部分。
我认为单靠这些台词就可以做到,但事实并非如此。
例如捕获列表的最后一个元素:
(, $my_var) = split(/_/,$sample_string);
例如捕获列表的第二个元素:
(, $my_var, , ,) = split(/_/,$sample_string);
这在 Perl 中可行吗?
【问题讨论】:
标签: perl
我只想捕获 Perl 中函数输出的列表的一部分。
我认为单靠这些台词就可以做到,但事实并非如此。
例如捕获列表的最后一个元素:
(, $my_var) = split(/_/,$sample_string);
例如捕获列表的第二个元素:
(, $my_var, , ,) = split(/_/,$sample_string);
这在 Perl 中可行吗?
【问题讨论】:
标签: perl
另一种解决方案:将不需要的元素分配给undef:
(undef, $my_var) = split(/_/,$sample_string);
【讨论】:
返回数组的第二个元素:
my $second_element = (split(/_/,$sample_string))[1];
【讨论】:
当你只需要找到两个下划线时,为什么要找到所有的下划线?
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);
【讨论】: