【问题标题】:Perl split function - consecutive delimitersPerl 拆分函数 - 连续分隔符
【发布时间】:2011-06-14 19:20:15
【问题描述】:

我正在使用split 函数来拆分文件中的每条记录。比如说,分隔符是$

my @fields = split(/\$/,$record);

如果每条记录有 4 个字段,如果某些字段为空,则有 2 个连续的美元符号,如下所示:

abc$efg$ehd$rty
abc$$$

split 不适用于第二条记录,因为拆分后只有 2 个字段,而不是 4 个。

知道如何解决这个问题,或者是否有更好的选择?

【问题讨论】:

    标签: perl split delimiter


    【解决方案1】:

    来自split documentation

    如果 LIMIT 为负数,则视为指定了任意大的 LIMIT。

    这意味着如果您执行以下操作:

    my @fields = split( /\$/, $record, -1 );
    

    ...那么您将获得列表中最后三个条目的空白字段。

    #!perl
    
    use strict;
    use warnings;
    use Data::Dumper;
    
    my $string = 'abc$$$';
    my @fields = split( /\$/, $string, -1 );
    print Dumper \@fields;
    

    打印出来:

    $VAR1 = [
              'abc',
              '',
              '',
              ''
            ];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多