use Data::Dumper; my $txt = 'a,b,c,d,,,,,,'; my @fld = $txt =~ /([^,]*)(?:,|$)/g; print Dumper \@fld; __output__ $VAR1 = [ 'a', 'b', 'c', 'd', '', '', '', '', '', '' ];