The main reason for not doing strings/integers was the idea that 98% of the things that you would want to do would be some sort of list/array not a single value, but i can see the value in doing it that way... also something that is not "ideal" is the fact that it will erase the string you pass to it in the decode function, returning the hash/array, but deleting everything out of the scalar ref that you pass to it. ie.
bDecode(\$str); # $str is now == ''
Any suggestions on fixing this would be appreciated.
NOTE: I implemented castaway's suggestions. Very nice idea there :).