0474. [perl] perl 정리11 - 달력
#!/usr/bin/perl
print "Hello, World...\n";
$year = 2009; $month = 1; $days = &getMonthDays($year,$month); &printCalendar($year,$month,$days);
#일 수를 구하기 sub getMonthDays { local ($y,$m) = @_; #local 변수
if ($m==1 || $m==3 || $m==5 || $m==7 || $m==8 || $m==10 || $m==12) { return 31; } elsif ( $m==4 || $m==6 || $m==9 || $m==11) { return 30; } elsif ($m==2) { if ($y % 4 == 0 && $y %100 != 0 || $y % 400 == 0) { return 29; } else { return 28; } } else { return 0; } }
#요일 구하기 #반환값 0:sun 1:Mon 2:Tue 3:Wed 4:The 5:Fri 6:Sat sub getWeekDay { my($y,$m,$d) = @_; #프라이비트 변수 if ($m ==1 || $m == 2) { $y--; $m += 12; }
my $w = ($y + int($y / 4) - int($y / 100) + int($y / 400) + int((13 * $m + 8) / 5) + $d) % 7; return $w; }
#캘린더표시 sub printCalendar{ ($y,$m,$d) = @_; $week = &getWeekDay($y,$m,1); print "\n 서기, $y년, $m월\n"; print "----------------------------------------\n"; print " Sun Mon Tue Wed The Fri Sat \n"; print "----------------------------------------\n"; for ($i=1;$i<$week ;$i++) { print " "; } $w=$week; for ($i=1;$i<=$d ;$i++) { if ($w %7 ==0 && $w >=6) { print "\n"; } printf("%4d",$i); $w++; } }
print "\n"; print "\n"; print "\n"; |