use warnings; use strict; use DBI; unlink 'sports.csv'; my $dbh = DBI->connect("dbi:CSV:f_ext=.csv") or die "Cannot connect: $DBI::errstr\n"; $dbh->do("CREATE TABLE sports (name TEXT, sport TEXT)"); my $sth = $dbh->prepare("INSERT INTO sports (name, sport) VALUES (?, ?)"); $sth->execute_array({}, [qw(fred joe bob)], [qw(golf hockey luge)]); dumpTable($dbh); $dbh->do("DELETE FROM sports WHERE name = 'fred'"); print "\nDeleted fred\n"; dumpTable($dbh); print "\nCSV file contains:\n"; open my $fIn, '<', 'sports.csv'; print <$fIn>; close $fIn; sub dumpTable { my ($dbh) = @_; my $sql = 'SELECT name, sport FROM sports order by name'; for my $row (@{$dbh->selectall_arrayref($sql)}) { print "$row->[0]: $row->[1]\n"; } }