+my $null = ''; # FIXME undef?
+
+sub _split_line {
+ my ( $delimiter, $line ) = @_;
+ my @v;
+ while ( $line ) {
+ if ( $line =~ s/^"([^"]+)"\Q$delimiter\E?// ) {
+ push @v, $1;
+ } elsif ( $line =~ s/^([^\Q$delimiter\E]+)\Q$delimiter\E?// ) {
+ push @v, $1;
+ } elsif ( $line =~ s/^\Q$delimiter\E// ) {
+ push @v, $null;
+ } else {
+ die "can't parse [$line]\n";
+ }
+ }
+
+ return @v;
+}
+