Calculate holidays
#!/usr/bin/perl -w
# This programm calcs german holidays
# While today is neither a holyday nor Saturday or Sunday
# it returns false, otherwise true
use Date::Calc qw(Easter_Sunday Add_Delta_Days) ;
$jahr = `date +%Y`;
chop($jahr);
sub holiday
{
$addsub = shift(@_);
($year,$month,$day) = Add_Delta_Days(Easter_Sunday($jahr), $addsub);
if (length($month) == 1)
{
$month = „0$month“;
}
if (length($day) == 1)
{
$day = „0$day“;
}
my $date = „$year$month$day“;
return $date;
}
$wd = `date +%w`;
chop($wd);
if ($wd !~ /0|6/)
{
$neujahr = ($jahr . „0101“);
$karfreitag = holiday(-2);
$ostersonntag = holiday(0);
$ostermontag = holiday(1);
$tagderarbeit = ($jahr . „0501“);
$vatertag = holiday(39);
$pfingstsonntag = holiday(49);
$pfingstmontag = holiday(50);
$fronleichnam = holiday(60);
$nationalfeiertag = ($jahr . „1003“);
$allerheiligen = ($jahr . „1101“);
$xmas = ($jahr . „1224“);
$ersterxmas = ($jahr . „1225“);
$zweiterxmas = ($jahr . „1226“);
$sylvester = ($jahr . „1231“);
$date = `date „+%Y%m%d“`;
#$date = „20030420“; # Test some date
chomp ($date);
if ($date !~ /($neujahr|$karfreitag|$ostersonntag|$ostermontag|$tagderarbeit|$vatertag|$pfingstsonntag|$pfingstmontag|$fronleichnam|$nationalfeiertag|$allerheiligen|$xmas|$ersterxmas|$zweiterxmas|$sylvester)/)
{
print „false“;
}
else
{
print „true“;
}
}