Jak poznamenává @choroba ve své odpovědi, není to DBI, kdo s daty něco dělá. Pouze prochází tím, co modul ovladače (ve vašem případě DBD::mysql) vrátil.
V části Obecná pravidla a upozornění rozhraní sekce dokumentů DBI říká:
Napsal jsem, že v dobách předtím bylo běžné konfigurovat perl tak, aby podporoval 64bitová celá čísla, a typy long-double s pohyblivou řádovou čárkou byly neobvyklé. V současnosti doporučuji, aby ovladače vracely hodnoty v „nejpřirozenějším“ typu Perl, u kterého nehrozí ztráta dat.
U některých ovladačů může být jejich implementace složitá, zejména u těch, které podporují vracení více sad výsledků s různým počtem sloupců z jednoho ovladače, jako to dělá DBD::mysql.
Prohlédl jsem dokumenty DBD::mysql ale neviděl jsem žádnou zmínku o tomto tématu, tak jsem se podíval na příslušný kód kde vidím, že aktuální DBD::mysql je vrací čísla jako čísla. V protokolu změn je také spousta odkazů na nedávné změny v této oblasti .
Možná používáte starou verzi DBD::mysql a měli byste upgradovat.