Hmm .. i guess it doesn't. (I tried OP's code w/$db{"1"}{"pic1"} = scalar $var; and it gave the same error ...)
Well, my line of thought was that $var = join "", split(// , $var); worked because the split's 2nd arg gets treated in scalar context .. So instead, does that mean that split just happens to stringify it's 2nd argument and that's why it worked as OP wanted?