Actually, those URI question mark query parameters don't seem to be getting across - they're just considered part of the filename for whatever reason:
CONNECT=> 'dbi:SQLite:dbname=file:mysqlite.db?cache=shared'
19456 Jul 25 00:32 file:mysqlite.db?cache=shared
CONNECT=> 'dbi:SQLite:dbname=mysqlite.db?cache=shared'
19456 Jul 25 00:34 mysqlite.db?cache=shared
I'm getting exactly the same results on OS X 10.8
and Ubuntu 13.04. I even tried updating DBI and DBD::SQLite to the latest versions, but with no effect. I'm using the exact code you posted today and I'm just changing the CONNECT constant as shown above.
I must be doing something very stupid I just can't find what that is :-(