$line = $linestarts{$network}->{$channel}->[rand @{$linestarts{$network}->{$channel}}] or return; my $prev = lc $line; while (1) { my $newword = $lines{$network}->{$channel}->{$prev}->[rand @{$lines{$network}->{$channel}->{$prev}}] or last; $line .= " $newword"; last if $newword =~ /\n/o; $prev = lc $newword; }