#!/usr/bin/perl -w use strict; my ($answer, $guess, $guesses) = ("", "", 0); if (@ARGV) { open FILE, $ARGV[0] or die "No such dictionary..."; rand($.) < 1 && ($answer = (split(/[\r\n]+/,$_))[0]) while ; close FILE; @ARGV = (); } else { $answer = (split(/[\r\n]+/,<>))[0]; } system 'clear'; do { $guess = (split(/[\r\n]+/,<>))[0]; unless ($guess eq $answer) { if (length $guess != length $answer) { print "The answer is ", length $guess > length $answer ? "shorter" : "longer", "\n"; } else { print "The $$_[0] letter ($$_[1]) is ", $$_[2]? "" : "in", "correct\n" foreach map { [$_, (split //, $guess)[$_], (split //, $guess)[$_] eq (split //, $answer)[$_] ? 1 : 0 ] } (0..(length $guess) - 1); } } $guesses++; } while ($answer ne $guess); print "You figured it out in a mere $guesses guesses\n"; #### while (<>) { ... }