【问题标题】:Ignoring part of a list in the output of a func. call in Perl [duplicate]忽略函数输出中列表的一部分。调用 Perl [重复]
【发布时间】:2013-12-18 20:18:24
【问题描述】:

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

我认为单靠这些台词就可以做到,但事实并非如此。

例如捕获列表的最后一个元素:

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

例如捕获列表的第二个元素:

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

这在 Perl 中可行吗?

【问题讨论】:

    标签: perl


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      返回数组的第二个元素:

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

      【讨论】:

        【解决方案3】:

        当你只需要找到两个下划线时,为什么要找到所有的下划线?

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

        【讨论】:

          猜你喜欢
          • 2013-01-22
          • 2021-10-16
          • 2013-03-14
          • 2020-03-31
          • 2011-09-13
          • 2019-04-12
          • 1970-01-01
          • 2013-02-24
          相关资源
          最近更新 更多