@chorobaが彼の回答で述べているように、データを処理しているのはDBIではありません。ドライバーモジュール(この場合はDBD ::mysql)が返したものを通過しているだけです。
一般的なインターフェースルールと警告 DBIドキュメントのセクションには次のように書かれています:
私は、64ビット整数をサポートするようにperlを構成するのが一般的であり、long-double浮動小数点型が珍しい前の時代にそれを書きました。最近では、データ損失のリスクがない最も「自然な」Perlタイプでドライバーが値を返すことをお勧めします。
実装が難しい一部のドライバー、特にDBD ::mysqlのように、単一のハンドルから列数が異なる複数の結果セットを返すことをサポートするドライバーの場合。
DBD ::mysqldocs をざっと読みました しかし、このトピックについての言及は見当たらなかったので、関連するコード ここで、現在のDBD ::mysqlがであることがわかります。 数値を数値として返します。変更ログには、この領域の最近の変更への参照もたくさんあります 。
おそらく、古いバージョンのDBD ::mysqlを使用しており、アップグレードする必要があります。