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;