in reply to crypt sometimes returning undef
my $cryptedpass = crypt($passwrd1, $never_blank_value));
Is that a paste from your code? It appears to have unbalanced brackets. Perhaps that's part of the problem?
Alternatively, if you add a diagnostic on such intermittent occurences you might spot a connection. eg:
die "Empty result from crypt($passwrd1, $never_blank_value)" unless de +fined $cryptedpass;