… # Get a list of the tables my @table_names; eval { @table_names = @{$dbh->selectcol_arrayref("SHOW TABLES")}; 1; } or die "Couldn't retrieve list of MySQL tables: $DBI::errstr"; # Get data from each table my (@tables, $table); eval { foreach $table (@table_names) { # Record how the table is layed out my $layout = $dbh->selectall_arrayref("DESCRIBE $table"); # Store the data in a 2D array reference my @fields = map ${$_}[0], @{$layout}; my $data = $dbh->selectall_arrayref("SELECT " . (join ',', @fields) . " FROM $table"); push @tables, [$layout, $data]; } 1; } or die "Failed while obtaining data from $table: $DBI::errstr"; …