Actualización:
Simple, realmente, asignas el identificador devuelto por connect llamar a $l_dbh pero invoque un método en $dbh . debes use strict
.
Respuesta original:
El manejador de la base de datos $dbh no está definido, lo que significa que la conexión falló. Debe verificar los valores de retorno de sus llamadas o especificar { RaiseError => 1} en el connect llame para averiguar el motivo.
Además, no hay motivo para anteponer a cada subinvocación & :Utilice ConnectFailed( ) en lugar de &ConnectFailed( ) , a menos que conozca el efecto de prefijar una subinvocación con & y deseo de tener ese efecto.
De perldoc perlsub :