I've read through the docs and the archive to no avail..

I'm creating a calendar with some functions like this:

sub get_week{
   local ($y, $m, $d) = @_;
   local %week = ();   # HoH's for our week

   local $dotw = Day_of_Week($y, $m, $d);
   local ($monday_y, $monday_m, $monday_d) = Add_Delta_Days($y, $m, $d, -($dotw-1));

   for (my $i=0; $i<7; $i++) {
     local ($week[$i]{'y'}, $week[$i]{'m'}, $week[$i]{'d'}) = 
Add_Delta_Days($monday_y, $monday_m, $monday_d, $i);
   }
   return [EMAIL PROTECTED];
}

sub get_month{
   local ($y, $m) = @_;
   local $ditm = Days_in_Month($y, $m);

   local @month = ();

   local $d = 1;
   WEEK: for(my $i=0; $i<=5; $i++) {
     $month[$i] = get_week($y, $m, $d);
     last WEEK if (($month[$i][6]{m} > $m) ||
                   ($month[$i][6]{y} > $y));
     $d = ( (($d+7) > $ditm) ? ($ditm) : ($d+7) );
   }
   return [EMAIL PROTECTED];
}

so that my page looks something like this:

[-

+-- 18 lines: sub get_week{---- (see above)

+-- 21 lines: sub get_month{--- (see above)

-]

[$ sub month_cal $]

[-
  my ($y, $m) = @_;

  my @months = qw('' January February March
               April May June July
               August September October
               November December);
  my @days = qw(Mon Tue Wed Thu Fri Sat Sun);

  $month = get_month($y, $m);

  #print OUT Dumper \$month;
-]
   <table width="100%" border=1 cellspacing=2 cellpadding=2 align="center">
    <tr>
     <td colspan="7">
       <table width="100%" border=0 cellspacing=0 cellpadding=0 align="center">
        <tr>
         <td align="center">  </td>
         <td align="center"> <font size=4> [+ $months[$m] +] </font></td>
         <td align="center">  </td>
        </tr>
       </table>
     </td>
    </tr>

   <tr>
   [$ foreach $dow @days $]
     <td align="center"> [+ $days[$dow] +] </td>
   [$ endforeach $]
   </tr>

   [$ foreach $week @{$month} $]
      <tr>
      [$ foreach $day @{$month[$week]} $]
        <td> [+ $month[$week][$day]{d} +] </td>
      [$ endforeach $]
      </tr>
   [$ endforeach $]
   </table>

[$ endsub $]

<snip out HTML>

[-  month_cal('2004','6') -]

<more HTML snipped>

Now, the output from Data::Dumper looks like:
$VAR1 = \[ [ {}, {}, {}, {}, {}, {}, {} ], ${$VAR1}->[0], ${$VAR1}->[0], 
${$VAR1}->[0], ${$VAR1}->[0], ${$VAR1}->[0] ];

with no values. 

I have a test script working correctly, also attached.  This is the same code, 
cut/pasted and embperl'd.

Anybody have any idea why I can't do something like this?

I'm calling an Embperl function which calls another function, which in turn calls one 
other function 4-5 times, to
build a data structure of the days that should appear on a calendar.  

Help!

Nate Smith 
#!/usr/bin/perl
#

use strict;
use Date::Calc qw(:all);

#   my $y = 2004;
#   for (my $m=1; $m<=12; $m++){ 

    my ($y, $m, $d) = (localtime(time))[5,4,3];
    $y+= 1900;
    $m++;
    get_month ($y,$m);


    my $month = get_month($y, $m);


 
   for(my $week=0; $week<@{$month}; $week++) {
      print "$m/$y Week $week : \n";
      for(my $day=0; $day<@{${$month}[$week]}; $day++) {
          print "${$month}[$week][$day]{dayname}, ${$month}[$week][$day]{m}/${$month}[$week][$day]{d}/${$month}[$week][$day]{y}\n";
      }
     print "\n";
   }

   #}

sub get_month {
   my ($y, $m) = @_; 
   # How many Days In This Month?
   my $ditm = Days_in_Month($y, $m);

   # month: an Array of Arrays?
   my @month = ();

   # Now get the weeks..
   my $d = 1;
   WEEK: for(my $i=0; $i<=5; $i++) {
     $month[$i] = get_week($y, $m, $d);
     last WEEK if (($month[$i][6]{m} > $m) ||
                   ($month[$i][6]{y} > $y));
     $d = ( (($d+7) > $ditm) ? ($ditm) : ($d+7) );
   }
  return [EMAIL PROTECTED];
}

sub get_week {

   my ($year, $month, $day) = @_;
   my @week = ();
   my $dotw = Day_of_Week($year, $month, $day);
   my ($monday_y, $monday_m, $monday_d) = Add_Delta_Days($year, $month, $day, -($dotw-1));

   for (my $i=0; $i<7; $i++) {
     ($week[$i]{'y'}, $week[$i]{'m'}, $week[$i]{'d'}) = Add_Delta_Days($monday_y, $monday_m, $monday_d, $i);
     my $dotw = Day_of_Week($week[$i]{'y'}, $week[$i]{'m'}, $week[$i]{'d'});
     $week[$i]{'dayname'} = ('','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')[$dotw];
   }
   return [EMAIL PROTECTED];
}


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to