my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 }); # Using ScalarIO open my $fh, "<", \$csv_stream; while (my $row = $csv->getline ($fh)) { # just like a file, but now on a string ... } close $fh; # Using strings directly. Much less reliable! foreach my $line (@csv_strings) { my @row = $csv->parse ($line); }