Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Haiku generator

by hypknotizzed (Beadle)
on Mar 04, 2006 at 20:05 UTC ( [id://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

Replies are listed 'Best First'.
Re: Haiku generator
by holli (Abbot) 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
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2024-04-16 11:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found