use Text::CSV qw( ); my $content = ...; my $csv = Text::CSV->new(); open my $csv_fh, '<', \$content; while (<$csv_fh>) { my $status = $csv->parse($_) or die; my @fields = $csv->fields(); ... } #### use Text::CSV qw( ); my $content = ...; my $csv = Text::CSV->new(); while (length($content)) { my ($line) = $content =~ s/^([^\r\n]*)\r?\n?//; my $status = $csv->parse($line) or die; my @fields = $csv->fields(); ... }