47 lines
771 B
Perl
47 lines
771 B
Perl
#!/usr/bin/perl
|
|
|
|
while (<>) {
|
|
next if /^\./;
|
|
next if /^From / .. /^$/;
|
|
next if /^Path: / .. /^$/;
|
|
s/^\W+//;
|
|
push(@ary,split(' '));
|
|
while ($#ary > 1) {
|
|
$a = $p;
|
|
$p = $n;
|
|
$w = shift(@ary);
|
|
$n = $num{$w};
|
|
if ($n eq '') {
|
|
push(@word,$w);
|
|
$n = pack('S',$#word);
|
|
$num{$w} = $n;
|
|
}
|
|
$lookup{$a . $p} .= $n;
|
|
}
|
|
}
|
|
|
|
for (;;) {
|
|
$n = $lookup{$a . $p};
|
|
($foo,$n) = each(lookup) if $n eq '';
|
|
$n = substr($n,int(rand(length($n))) & 0177776,2);
|
|
$a = $p;
|
|
$p = $n;
|
|
($w) = unpack('S',$n);
|
|
$w = $word[$w];
|
|
$col += length($w) + 1;
|
|
if ($col >= 65) {
|
|
$col = 0;
|
|
print "\n";
|
|
}
|
|
else {
|
|
print ' ';
|
|
}
|
|
print $w;
|
|
if ($w =~ /\.$/) {
|
|
if (rand() < .1) {
|
|
print "\n";
|
|
$col = 80;
|
|
}
|
|
}
|
|
}
|