As a really late followup, there's now Packed::Array if you want to have a dense, integer-only array. Takes up (size * (sizeof(IV))) + 20 bytes for an integer array, give or take a native word or two.
Comment on Re: why does this array take up so much memory?