The best fix would be to name the columns something sensible. There is a dirty hack that might get you by, though.
in reply to Perl DBI + Access bind issues
I know some DBDs allow one to use placeholders for column names and fill those in at the time of the execution. I asked about DBD::ODBC in the ChatterBox and kennethk checked on that possibility. He says it works through DBD::ODBC for Access and he confirmed the trick works through DBD::Oracle, too.
This defeats part of the purpose of using a prepare. The execution engine for the DB won't be able to plan the queries for the most efficient execution this way. It might allow you to use column names that have to be escaped, though.
I'd like to thank kennethk for testing the idea when I asked if it would work. He didn't feel like creating a new table with question marks in the column names just to test, but he already went above and beyond to answer the question. It's worth a shot trying it with your column names if you can't get them renamed since he confirmed the trick in general.
My preference would still be to get the columns renamed.