The signature is saved to the database, but print $signature{$signature} with an empty $signature is not going to print it.
Using the signature itself as a key is probably not what you want. I think it would be more logical to use the user name as the key to the signature database: $signature{$key} = $signature.