in reply to Login form

my $salt = rand(16);

This creates a floating point number occasional with a length less than 8 which caused this error
Couldn't compute argon2id tag: Salt is too short.

There are various ways to create a random string of fixed length ( see Random string generator ) . A simple one is

my @chars = ("A".."Z", "a".."z",0..9); my $salt = join '', map{ $chars[rand @chars] } 0..15;
poj