Hola:
El problema esta en el query de tu mysql. Aquí te va el código. Corregí ese problema y te limpie un poco tu código:
Código:
#!/usr/bin/perl -w
use DBI;
use strict;
my $db_name="CENTRAL"; #Nombre de las base de datos
my $db_user="root"; #Usuario de la BD
my $db_pass="central"; #Password de la BD
my $tabla="prueba"; #Nombre de la tabla de ejemplo
my $host_name="localhost"; #Nombre de la tabla de ejemplo
#TU VARIABLE DE DATOS
my ($datos);
my $dbh = &connect_mysql;
#Decimos que hemos conectado
print "\nSe ha conectado con la BD $db_name del driver mysql\n";
my $sth = $dbh->prepare('INSERT INTO prueba SET datos=?') or die("Couldn't prepare statement: " . $dbh->errstr);
$sth->execute("$datos") or die("Couldn't execute statement: " . $sth->errstr);
$sth->finish;
$dbh->disconnect;
#FUNCION PARA CONECTAR
#ASÍ NO TIENES QUE USAR TANTO CÓDIGO
sub connect_mysql{
#Conectamos con la BD, si no podemos, ponemos un mensaje de error
my $q_string = "DBI:mysql:host=$host_name;database=$db_name";
return(DBI->connect($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
SALUDOS