#!/usr/bin/perl -w use strict; use Date::Handler; my $start_year = 2004; my $start_month = 9; my $start_day = 1; my $end_year = 2006; my $end_month = 9; my $end_day = 1; sub get_workdays() { my ($week_day, $year, $month, $day, $max_month, $max_day, $min_month, $min_day, $string); my @work_days = (); my $date; for $year ($start_year .. $end_year){ if ( ($year eq $start_year) ){ $min_month = $start_month; } else { $min_month = 1; } if ( ($year eq $end_year) ){ $max_month = $end_month; } else { $max_month = 12; } for $month ($min_month .. $max_month){ $date = new Date::Handler({ date => { year => $year, month => $month, day => 0 },}); if ( ($year eq $start_year) && ($month eq $start_month) ){ $min_day = $start_day; } else { $min_day = 1; } if ( ($year eq $end_year) && ($month eq $end_month) ){ $max_day = $end_day; } else { $max_day = ($date->DaysInMonth()); } for $day ($start_day .. $max_day){ $date = new Date::Handler({ date => { year => $year, month => $month, day => $day },}); $week_day = $date->WeekDayName(); if (&feiertage_bayern($day, $month)){ $string = $week_day.';;'.$day.';;'.$month.';;'.$year.';;'.&feiertage_bayern($day, $month); } else { $string = $week_day.';;'.$day.';;'.$month.';;'.$year; } push(@work_days, $string) unless ( ($week_day eq 'Saturday') || ($week_day eq 'Sunday') ); } } } return @work_days; } sub feiertage_bayern # ($_[0] = $day, $_[1] = $month) { my %feiertage=(); # Byerische Feiertage (yearly) $feiertage{'1.1'}='Neujahr'; $feiertage{'1.5'}='Erster Mai'; $feiertage{'24.12'}='Heilig Abend'; return $feiertage{$_[0].'.'.$_[1]} if ( ($feiertage{$_[0].'.'.$_[1]}) ); return 0; } my @dump= (); my @work_days = &get_workdays(); foreach my $work_day (@work_days) { @dump = split(';;', $work_day); if ($dump[4]){ print "$dump[0]\t$dump[1].$dump[2].$dump[3]\tFeiertag: $dump[4]\n"; } else { print "$dump[0]\t$dump[1].$dump[2].$dump[3]\n"; } }