Hi, Monks.

I've written a small program to print out haikus from a shell, and although the program works I have this vague sense that it could be better. So my question (I think) is more along the lines of "How could this be better? (more efficient? more Perlish?)" than "How do I do this?"

Just to clarify the idea: the program is like fortune, but much simpler. The user types haiku at a prompt and is rewarded with a (pseudo-)randomly selected three-line poem and its author. Here's my version:

#!/usr/bin/perl use strict; use warnings; my $number = int(rand(5)) + 1; my %poems = ( 1 => "Even in Kyoto:hearing the cuckoo's cry--:I long for Kyoto.:Basho", 2 => "In this world:We walk on the roof of hell:Gazing at flowers.:Issa", 3 => "The old pond--:a frog jumps in,:sound of water.:Basho", 4 => "In the white plum blossoms:night to next day:just turning.:Buson", 5 => "Sick on a journey,:my dreams wander:the withered fields.:Basho", ); my ($line1, $line2, $line3, $author) = split ":", $poems{$number}; print " $line1\n$line2\n $line3\n\t$author\n";

The real version has just over 80 haikus, but I figure we all get the point. (Though I'm happy to post the whole thing on my scratchpad, if anyone wants to play with the poems and avoid typing them.)

So I'm curious: is there some much better way to do it?


In reply to General question about a haiku program by telemachus

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.