use strict; use Time::HiRes qw(gettimeofday); my $stanzas = 4; my $lines = 4; my $prose_file = "/home/aa/perl/poetry/prose"; my $words_file = "/home/aa/perl/poetry/words"; # taken from /usr/share/dict/words my $debug = 1; my $start_time = gettimeofday; my @words = load_words(); my @proses = load_prose(); my $poem = generate_poem(); my $end_time = gettimeofday; my $processing_time = $end_time - $start_time; print "\n$poem"; if ($debug >= 1) { print "Duration: $processing_time\n"; } sub generate_poem { if ($debug >= 1) { print "Generating poem..\n"; } my $poem; my $stanza_number = 1; while ($stanza_number <= $stanzas) { my $line_number = 1; while ($line_number <= $lines) { my $prose = $proses[rand(int(@proses))]; while ($prose =~ m/RAND/) { $prose =~ s/RAND/$words[rand(int(@words))]/; } $prose =~ s/\n//g; $prose =~ s/\'s//g; $prose = lc($prose); if ($debug >= 1) { $poem .= "$stanza_number $line_number "; } $poem .= "$prose\n"; $line_number++ } $poem .= "\n"; $stanza_number++; } return $poem; } sub load_prose { if ($debug >= 1) { print "Loading prose..\n"; } open(FILE, $prose_file); my @lines = <FILE>; close(FILE); return @lines; } sub load_words { if ($debug >= 1) { print "Loading words..\n"; } open(FILE, $words_file); my @lines = <FILE>; close(FILE); return @lines; }