Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Haiku generator

by hypknotizzed (Beadle)
on Mar 04, 2006 at 20:05 UTC ( #534517=CUFP: print w/ replies, xml ) Need Help??

Hello, fellow monks. This is my first original program and it is a basic haiku generator. I got the idea because we are doing poetry in school and I saw the poem thing by zentara and thought it would be cool.
use strict; my @line1 = ('annoying sensei', 'oh, young grasshopper', 'dis-honourable', 'you aburi brain' ); my @line2 = ('learn to run before you walk', 'he thinks he knows everything', 'insubordinate pupil', ); my @line3 = ('hey, wait a minute', 'he must be senile', 'he will face my wrath', 'his brain is not well' ); print $line1[rand @line1], "\n"; print $line2[rand @line2], "\n"; print $line3[rand @line3], "\n";
Seeing as this is my first program, if anyone could give me some pointers, that would be uber.

SOA, DOA, GOA, whatever,

hypknotizzed

Comment on Haiku generator
Download Code
Re: Haiku generator
by holli (Monsignor) on Mar 04, 2006 at 21:23 UTC
    if anyone could give me some pointers, that would be uber.
    Whenever you catch yourself typing the same expressions more than two times, give it a break and think: "Can I somehow express this in a loop?". In this case the outcome of such a thought would look like this code.
    use strict; my @haiku = ( [ 'annoying sensei', 'oh, young grasshopper', 'dis-honourable', 'you aburi brain' ], [ 'learn to run before you walk', 'he thinks he knows everything', 'insubordinate pupil', ], [ 'hey, wait a minute', 'he must be senile', 'he will face my wrath', 'his brain is not well' ], ); for my $line (0..2) { print $haiku[$line][rand @{$haiku[$line]}], "\n"; }
    Here we have a data structure (array of arrays) that holds your haiku strings. Once we have that we can easily loop over the main array an choose a random line from each "sub-array". See perlref and perlreftut for more about data structures.


    holli, /regexed monk/

      But then, why not just iterate through the array directly?

      use warnings; use strict; my @haiku = ( [ 'annoying sensei', 'oh, young grasshopper', 'dis-honourable', 'you aburi brain' ], [ 'learn to run before you walk', 'he thinks he knows everything', 'insubordinate pupil', ], [ 'hey, wait a minute', 'he must be senile', 'he will face my wrath', 'his brain is not well' ], ); for my $line (@haiku) { print $$line[rand @$line], "\n"; }
        Hey ambrus, thanks for the advice but I'm new so I haven't learned loops yet. Thanks for the help.

        SOA, DOA, GOA, whatever,

        hypknotizzed

      Hey holli, thanks for the advice but I'm so new I haven't even learned loops yet. I guess I should get started on that...

      SOA, DOA, GOA, whatever,

      hypknotizzed

Re: Haiku generator
by chanio (Priest) on Mar 05, 2006 at 04:05 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://534517]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (13)
As of 2014-07-24 18:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (165 votes), past polls