#!/usr/bin/perl use strict; use warnings; use DBI; use Data::Dumper; my $table = shift @ARGV || 'people'; my $dbh = DBI->connect("DBI:mysql:database=experts;host=localhost", "developer", "secret", {'RaiseError' => 1}); my $sth = $dbh->prepare("SELECT * FROM $table"); die "Error: " . $dbh->errstr . "\n" unless ($sth); die "Error: " . $sth->errstr . "\n" unless ($sth->execute); my $names = $sth->{'NAME'}; my $type = $sth->{'mysql_type_name'}; my $length = $sth->{'mysql_length'}; my $is_nullable = $sth->{'NULLABLE'}; my $is_pri_key = $sth->{'mysql_is_pri_key'}; my $is_autoinc = $sth->{'mysql_is_auto_increment'}; $sth->finish(); $dbh->disconnect(); my @structure = map { { f_name => $names->[$_], f_type => $type->[$_], f_length => $length->[$_], f_nullable => $is_nullable->[$_] ? 1 : 0, f_pri_key => $is_pri_key->[$_] ? 1 : 0, f_autoinc => $is_autoinc->[$_] ? 1 : 0, }; } (0..$#{$names}); die Dumper \@structure;