use strict; my $dict = "/usr/dict/words"; my ($set, $cur, $end) = (0, 1, 2); for my $i (1..30) { printf "word #%2d: \%s\n", $i, &pick_word(10); } sub pick_word { my $reqsize = shift; my $ret = ""; my $die = 0; open DICT, "$dict" or die "redmist code: $!"; seek DICT, rand(-s $dict), $set; ; # this get's us to the start of the next line. TOP: while () { ($ret = $1 and last) if /^(\w{$reqsize})$/; } if(length($ret) != $reqsize) { # ok, go back around seek DICT, 0, $set; # but remember we were already here ... die "Word too big, aaaaaaaahhhhhh!" if $die; $die = 1; goto TOP; } close DICT; return $ret; }