If you want, you can also save binary data by encoding it into a hex string.
my $hexstr = unpack("H*", $barestr);
# However, notice that $hexstr will be twice as large as $barestr
As for your method, it is a cache engine, which can work fine if your data does not change frequently.
If you data is updated more often, though, your cache engine would be more expensive than a simple query.
Moreover, I am not sure that your solution would hold for large collections of data (more than 10,000 records). After all, this is the main reason to use a database engine.
The golden rule is: if your data is either small or non-complex, then use a file (eg: BDB), else use a database.
Personally, I have experienced that the normal MySQL table cache, when given enough memory, is more than reasonably fast, even for complex queries.
_ _ _ _
(_|| | |(_|><
_|