#!/usr/bin/perl -w use strict; use DBI; my ($driver, $dbh, @tables); $driver="DBI:CSV:f_dir=Tables"; $dbh=DBI->connect($driver) or die "Can't connect: $DBI::errstr"; eval { @tables = $dbh->tables; @tables = grep { s/.*\.//o } @tables; } or die "Couldn't retrieve list of tables: $DBI::errstr\n"; for my $thisTable (@tables) { eval { my $sth=$dbh->prepare("select * from $thisTable where 1 = 0"); $sth->execute(); my $columnRef=$sth->{NAME_lc}; for my $thisColumn (@$columnRef) { print "Table: $thisTable, column is: $thisColumn\n"; # Do whatever else you want with the columns. } 1; } or die "Couldn't read table $_: $DBI::errstr\n"; } $dbh->disconnect();