BEGIN { $| = 1; print "1..22\n"; # Adjust to the number of tests implemented $Crypt::UnixCrypt::OVERRIDE_BUILTIN = 1; # do use our own crypt() } END {print "not ok 1\n" unless $loaded;} use Crypt::UnixCrypt; $loaded = 1; print "ok 1\n"; # Thanks to Tom Phoenix, rootbeer@redcat.com, for these test cases my %passwords = qw{ baVNbYZEf7LDE fred fr7q2GbYzYnUY fred frDRU8pKCvhno barney bavBxSScsQx4c barney frnyAy5uqxI72 Fred frOnUcrBFxA0. FRED loS9ozwAlfL0. thisstringistoolong on0GQrELiWzlk onlythefirst8charsareused puTVTxaAZz6sw I've%got_punc!tu~a$tion*marks? moaj75vMGk/4s !@$%^&*()~ }; my $start = 2; for (sort keys %passwords) { my $pass = $passwords{$_}; my $crypted = crypt $pass, $_; print "# Expected $_ got $crypted ($pass)\nnot " if $_ ne $crypted; print "ok ", $start++, "\n"; # Try a false salt my $original = $_; s/^(..)(.*)$/ $1 . reverse $2 /e; $crypted = crypt $pass, $_; print "# crypt is returning the salt!\nnot " if $_ eq $crypted; print "ok ", $start++, "\n"; } print "not " unless crypt("fr","someverylongstring") eq crypt("fr","somevery"); print "ok ", $start++, "\n";