http://www.perlmonks.org?node_id=270410

NetWallah has asked for the wisdom of the Perl Monks concerning the following question:

Having struggled for almost 2 hours to resolve this issue, I thought I might share what I have learned, and perhaps help other monks who may need to deal with this.

This issue has been discussed in the thread DBI, Windows and Perl56.dll error but I don't think that thread identified the root cause.

The symptom: The simplest DBI open connection causes the popup message box complaining about the missing "perl56.dll", and the open fails. Basically, DBI is broken at this point.

Here is my understanding of the situation. I would welcome wiser meditations by monks with a better understanding of module implementation.
DBI and ODBC guts are implemented in \Perl\site\lib\auto\DBI\DBI.dll and \Perl\site\lib\auto\Win32\ODBC\ODBC.dll.
These dll's have perl<version>.dll hard-coded in them, where <version> is the version of PERL that the DBI and ODBC modules were installed with.

Hence, if you upgraded from perl 5.6 to 5.8, and did not re-install the modules, they would still want to link to the old perl DLL, and fall apart, if the old perl was absent.

Moral of the story - Re-install all modules when you install perl.
Side-story : my ppm no longer works - it complains about no valid targets, although all target settings are legitimate. Hence, I have had to manually re-install modules. Hope this helps the next monk who encounters this.
Cheers