# untested, just an example use strict; use warnings; use autodie; use LWP::Simple; use Text::CSV_XS; my $data = get ("http://some.web.site/location/data.csv"); open my $fh, "<", \$data; # if the site correctly encoded the data open my $fh, "<:encoding(utf-8)", \$data; # if you have to decode yourself my $csv = Text::CSV_XS->new ({ auto_diag => 1, binary => 1 }); while (my $row = $csv->getline ($fh)) { # do something with @$row }