I reckon that you didn't have time to read the books I recommended recently because the code still shows an embarrassing list of problems. Well, maybe you're in a lot of time trouble. But seriously: Writing so much bad code costs you a lot of time.
- You didn't use strict; nor use warnings;, as several monks have recommended several times. Ignoring such advice will slow you down and reduce the willingness of others to help you. You might already have experienced that.
- $data isn't %data. use strict; would have told you that, and perldata can teach you how to do it right. Heed the advice of shmem and read perldata.
- You are calculating a digital hash signature over a string like HASH(0x55614c602278), only that the number varies on every program run and there's no chance that the recipient will ever accept any of these signatures (but since you don't add it to the correct hash anyway, this doesn't matter).
Before you demonstrate some progress in your skills, I think it makes no sense to explain the concepts of serialization and encoding to you. Getting these right is necessary if you want to create signatures which can be actually validated by the recipient of your form.
Good luck!