DateTime (Dave Rolsky and others)

use DateTime;
use DateTime::Format::W3CDTF;
use DateTime::Event::Recurrence;

my $set = DateTime::Event::Recurrence->monthly( 
        weeks => 2, 
        days => 1 
        );

my $start = DateTime->new(
        year   => 2006,
        month  => 1,
        day    => 1,
        );
my $end = DateTime->new(
        year   => 2006,
        month  => 12,
        day    => 31,
        );

my @days = $set->as_list( 
        start => $start, 
        end => $end 
        );

my $f = DateTime::Format::W3CDTF->new;

for my $day (@days) {
    my $dt = $f->parse_datetime($day);
    print $dt->strftime("%d %B") . "\n";

}