Hi Mr. Muskrat, thanks for getting back to me.

I had more or less arrived at the script you propose, which does indeed push the calendars into the container table. The problem is that the line

$cal->item( 15, 16, 17 )->wrap_content( font({ size => 4, color => 're +d' }) );
dictates the days highlighted, rather than the array @days.

My challenge is to associate each @days with its corresponding $new_c

The code below I hope shows a bit more clearly what I'm trying to achieve - tho' it doesn't work - perhaps you wouldn't mind taking a look and giving me your comments. (I've done very little with hashes so far so I'm guessing a little bit on how this might be achieved).

#!/usr/bin/perl -w use strict; use CGI qw(:standard); use Date::Calc qw(:all); use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use lib '/home/users/t/my_site.com-90978/lib'; use HTML::AsSubs; use HTML::Element; use HTML::CalendarMonth; # @dates has already been sorted my @dates = ( 730000, 731158, 731159, 731160, 731161, 731178, 735000 ) +; my @cals; print header(), start_html(-title => "Calendars"); # As long as there is a date left in @dates while (defined $dates[0]) { # get the first value from @dates leaving @dates alone my $days = $dates[0]; # find out the year, month and day so we can create a calendar my ($year, $month, $day) = Add_Delta_Days(1,1,1, $days - 1); # run the CreateCal subroutine with the year and month from the firs +t date # store the returned value in @dates so it can be used the next time + through the while loop @dates = CreateCal($year, $month, @dates); } exit(0); sub CreateCal { # Get the year and month for the calendar # as well as the @dates to use my ($cyear, $cmonth, @dates) = @_; # set up some variables that are local to this subroutine my (@days, @temp); my %calendar; my $new_c; my $t; # Process each $days in @dates foreach my $days (@dates) { # Get the year, month and day of $days my ($year, $month, $day) = Add_Delta_Days(1,1,1, $days - 1); # does it match the calendar we are creating? if ($year == $cyear && $month == $cmonth) { # if yes, then add the $day to @days push (@days, $day); } else { # if no, then add the $days to @temp push (@temp, $days); } } #while there are spare $days remaining if (@temp) { my $new_c = new HTML::CalendarMonth(month => $cmonth, year => $c +year,); #Create hash linking $new_c and @days %calendar = ($new_c => @days); return @temp; #when all $days are used up: } else { # Embolden headers #throw new calendar with @days foreach ($new_c{@days}) { $_->item($_->month,$_->year)->wrap_content(font({size => '2'})) +; $_->item($_->dayheaders)->wrap_content(font({size => '1'})); $_->item(@days)->wrap_content(font({size => 4, color => 'red'})); # Generate container table my $t = new HTML::ElementTable ( maxrow => 1, maxcol => 6 ); # Populate container table foreach (0..$#cals) { $t->cell(0,$_)->push_content($cals[$_]); } print $t->as_HTML; } } } #There may be a lot of gobbledygook here but I hope it gives an idea o +f what I'm trying to do with this approach. #Other issue is re-sorting so the calendars are placed in the table in + order.

In reply to Re: Re: Generating a container table in HTML::CalendarMonth by jonnyfolk
in thread Generating a container table in HTML::CalendarMonth by jonnyfolk

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.