in reply to Haiku generator

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/

Replies are listed 'Best First'.
Re^2: Haiku generator
by ambrus (Abbot) on Mar 04, 2006 at 21:34 UTC

    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

Re^2: Haiku generator
by hypknotizzed (Beadle) on Mar 04, 2006 at 21:46 UTC
    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