我想在这里使用 split 还是 pop ?

Sha*_*lex 10 perl

我发现了一些奇怪的事情split。我想它不会解析空白内容,直到最后有东西为止。

我有一个以逗号分隔的字符串。但是,当末尾有重复的分隔符时,它们不会被添加到数组中,直到末尾有这样的东西:

use warnings;
use strict;
use Data::Dumper;

my $str = "ABC,123,,,,,,"; # just ABC and 123
#my $str = "ABC,123,,,,,,this"; # now it shows the blanks.
my @elems = split ',', $str;
print Dumper \@elems;
Run Code Online (Sandbox Code Playgroud)

任何其他方式,例如正则表达式?或者我应该欺骗数组然后pop最后的内容?

too*_*lic 14

您可以指定负 LIMIT:

my $str = "ABC,123,,,,,,";
my @elems = split ',', $str, -1;
Run Code Online (Sandbox Code Playgroud)

分裂

如果 LIMIT 为,则将其视为任意大;生成尽可能多的字段。

如果 LIMIT 被省略(或等效地为零),则通常将其视为负数,但尾随空字段将被剥离

Dumper 输出:

$VAR1 = [
          'ABC',
          '123',
          '',
          '',
          '',
          '',
          '',
          ''
        ];
Run Code Online (Sandbox Code Playgroud)