Very nice. A couple of notes:
- unshift into your past days so you don't have to reverse printing them
- Lingua::EN::Number::Ordinate takes care of that yucky hardcoded list of day names
Here's my shortened version
#!/usr/bin/perl
use warnings;
use strict;
use Lingua::EN::Numbers::Ordinate;
my @past_gifts;
my $day = 0;
for my $todays_gift ( <DATA> ) {
chomp $todays_gift;
my $dayword = ordinate(++$day);
print join( "\n",
"On the $dayword of Christmas",
"My true Perl gave to me",
$todays_gift,
@past_gifts,
("") x 2,
);
unshift( @past_gifts, @past_gifts ? $todays_gift : "And $todays_gi
+ft" );
}
__DATA__
a commandline in an @ARGV
2 sca-lars
3 ar-rays
4 nested hash
5 ENCODED STRINGS
6 threads-a-spawning
7 procs-a-forking
8 tests succeeding
9 modules loading
10 objects blessing
11 signals catching
12 saints-a-drinking
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.