#!/usr/bin/perl -w
init_word();
print "What is your name? ";
$name = <STDIN>;
chomp $name;
if ($name =~ /^aaron\b/i)
{
print "Hello, Aaron. How good of you to join me.\n";
}
else
{
print "Hello $name.\n";
print "What is the secret word? ";
$guess = <stdin>;
chomp $guess;
while (!good_word($name, $guess))
{
print "Wrong try again. What is the secret word? ";
$guess = <stdin>;
chomp $guess;
}
}
sub good_word
{
my($somename, $someguess) = @_;
$somename =~ s/\W.*//;
$somename =~ tr/A-Z/a-z/;
if($somename eq "aaron") {
return 1;
} elsif ( ($words{$somename} || "groucho") eq $someguess) {
return 1;
} else {
open MAIL, "|mail user\@localhost";
print MAIL "bad news: $somename guessed $someguess\n";
close MAIL;
return 0;
}
}
sub init_word
{
while(defined($filename = glob("*.secret"))) {
open (WORDLIST, $filename) || die "Can't open wordlist : $!";
if(-M WORDLIST < 7.0){
while(defined ($name = <WORDLIST>)){
chomp($name);
$word = <WORDLIST>;
chomp($word);
$words{$name} = $word;
}
} else {
rename ($filename, "$filename.old") ||
die "Can't rename $filename to $filename.old : $!";
}
close(WORDLIST) || die "Couldn't close wordlist : $!";
}
}