Może komuś się przyda poprawiłem skrypt, nie można podawać daty po . ponieważ wtedy funkcja split zle działa, i dlatego a bylo zawsze rowne 0 i zle liczyło wszystko. oto kod działający:
Kod php:
#!/usr/bin/perl
@week = (
"Niedziela",
"Poniedzialek",
"Wtorek",
"Sroda",
"Czwartek",
"Piatek",
"Sobota"
);
@mon = (0, 1, 1, 2, 5, 6, 2, 3, 4, 0, 1, 4);
print "Prosze podac date (w formacie dd.mm.rrrr): ";
$date = <STDIN>;
@data = split(/-/, $date);
$d = $data[0];
$m = $data[1];
$y = $data[2];
# gregorianski czy julianski?
if($y>1582){
$s=1
}
else {
$s=0
}
# przestepny?
$leap = ($s==0 && $y%4==0 || $s!=0 && ($y%4==0 && $y%100!=0 ||
($y%400)==0));
$a = ($y % 100);
$b =
($s==0)*(4+($y%700)/100+2*($a/4)+6*((!$leap)*(1+($a%4))+($leap)*((9+$m)/12)))%7+($s!=0)*(2*(1+($y%400)/100+($a/4))+6*((!$leap)*(1+($a%4))+($leap)*((9+$m)/12)))%7;
$c = (3*$mon[$m-1]+$d)%7;
$N = ($c+6*$b)%7;
print "a = ".$a."\n".
"b = ".$b."\n".
"c = ".$c."\n".
"N = ".$N."\n";
print $week[$N]."\n";