Aunque estoy dando gratuitamente el código realmente apreciaría que dejarás mi firma en el encabezado del script así como la que se despliega al crear el calendario. No hay nada que te obligue a mantenerla pero considera que estoy regalando código, y pues si te gusta sería una manera de apoyar al sitio, así que ojala y te sirva:
#!/usr/bin/perl -w
use strict;
use Time::Local;
######################################################################
# Distribución: Scripts de Perl en Español (http://perlenespanol.baboonsoftware.com/)
#
# Archivo: calendario.cgi
# Versión: 1.0
# Descripción: Un pequeño script que despliega un calendario formateado
# Creado por: Uriel Lizama
#
# Parte de los scripts de Perl en Español. Todos los derechos reservados
#
# E-Mail: uriel@baboonsoftware.com (http://perlenespanol.baboonsoftware.com/)
#######################################################################
#ESTAS VARIABLES DEBES DE EDITAR
my $anio = "2004"; #de que año estamos hablando
################################################
######## NO EDITAR ABAJO ####################
################################################
my $mes;
for($mes=1;$mes<=12;$mes++){
header_calendario_html(); #imprimir cabeza
crear_calendario(); #crear el calendario
footer_calendario_html(); #imprimir pie
}
#FIRMA: Por favor no la retires
print "<p align=\"right\">\n";
print "<a href=\"http://perlenespanol.baboonsoftware.com/\">Creado por Uriel Lizama</a>\n";
print "</p>\n";
exit(1);
sub crear_calendario{
my $dia_inicial = dia_semana();
my ($i,$j); #contadores
my @dias_semana = ('Domingo','Lunes','Martes','Miércoles','Jueves',
'Viernes','Sábado','Domingo');
my @dias_meses = ('', 31,29,31,30,31,30,31,31,30,31,30,31);
#Año bisiesto hack - YEY!....mis locuras ya ves
if($mes == 2){
$dias_meses[$mes] = 28 if $anio%4 != 0;
}
#Llenar espacios vacíos
print "<tr>\n";
print "<td style=\"text-align:center;width:50px;\"> </td>\n" x $dia_inicial;
for($i=1,$j=$dia_inicial;$i<=$dias_meses[$mes];$i++,$j++){
$j = 0 if $j > 6;
print "<tr>\n" if $j == 0;
print "<td style=\"text-align:center;width:50px;\">$i</td>\n";
print "</tr>\n" if $j == 6;
}
} #sub crear calendario
sub header_calendario_html{
my @nombres_meses = ('', 'Enero','Febrero','Marzo','Abril',
'Mayo','Junio','Julio','Agosto',
'Septiembre','Octubre','Noviembre','Diciembre');
print "Content-type: text/html\n\n" if $mes == 1;
print "<table align=\"center\" border=\"1\">\n";
print "<tr>\n";
print "<td style=\"text-align:center;background-color:black;color:white;\" colspan=\"7\">$nombres_meses[$mes]</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<td style=\"text-align:center;width:50px;\">D</td>\n";
print "<td style=\"text-align:center;width:50px;\">L</td>\n";
print "<td style=\"text-align:center;width:50px;\">M</td>\n";
print "<td style=\"text-align:center;width:50px;\">M</td>\n";
print "<td style=\"text-align:center;width:50px;\">J</td>\n";
print "<td style=\"text-align:center;width:50px;\">V</td>\n";
print "<td style=\"text-align:center;width:50px;\">S</td>\n";
print "</tr>\n";
} #sub header_calendario_html
sub footer_calendario_html{
print "</table>\n";
print "<p>\n";
} #sub footer_calendario_html
sub dia_semana{
my $gmtime = timegm(0,0,0,"01",$mes-1,$anio-1900);
my @gmtime = gmtime($gmtime); #regresarlo
return($gmtime[6]);
} #sub get_dia_semana