package EqYear; use base 'main'; use strict; use warnings; use Scaliger; sub init{ my $self = shift; $self->{STASH}{year} = do{ my $d = [localtime]; $d->[5] + 1900; }; $self->{STASH}{comchecked} = 'checked'; } sub control{ my $self = shift; if($self->param('find') || $self->param('year')){ my $year = $self->trim($self->param('year')); $self->{STASH}{year} = $year if $year; my $checked = $self->param('opts') ? $self->param('opts') : 'com'; # com || jan || dec $self->{STASH}{$checked.'checked'} = 'checked'; return $self->errorP(title => 'Jahr nicht formgemäß als Zahl', descr => 'Das Jahr bitte vierstellig angeben') unless $year =~ /^\d\d\d\d$/; if($year == 1582){ return $self->errorP(title => 'Das Jahr 1582 ist einmalig', descr => 'Für das Jahr 1582 gibt es keine weitere übereinstimmende Jahre'); } my $sca = Scaliger->new(date => sprintf("%s.%s.%s", 1, $checked eq 'dec' ? 12 : 1, $year )) or die $@; $self->{STASH}{leap} = $sca->leap; $self->{STASH}{years} = []; while($year--){ next if $year == 1582; my $t = Scaliger->new(date => sprintf("%s.%s.%s", 1, $checked eq 'dec' ? 12 : 1, $year )) or die $@; if( $checked eq 'com' ){ if($t->wd == $sca->wd && $t->leap eq $sca->leap){ push @{$self->{STASH}{years}}, {year => $year}; } } else{ if($t->wd == $sca->wd ){ push @{$self->{STASH}{years}}, {year => $year}; #$self->dd( [$sca, $t] ); } } last if scalar @{$self->{STASH}{years}} > 30; } $self->{STASH}{res} = scalar @{$self->{STASH}{years}} ? 1 : 0; } elsif($self->param('src')){ my $pkg = ref $self; $self->{CONTENT} = do{ local @ARGV = $INC{"$pkg.pm"}; local $/ = undef; <>; }; $self->header( "Content-Type" => "text/plain; Charset=UTF-8" ); } else{ return $self->errorP(title => 'Unbekannte Parameter', descr => 'Unbekannte Paramter'); } } 1;######################################################################### __DATA__

Gesucht werden in der Vergangenheit liegende (maximal 30) Jahre, bei denen alle Tage deckungsgleich mit dem eingegebenen Jahr sind. Wobei eingegrenzt werden kann, ob nur die Tage vo Januar bis Februar oder von März bis zum Rest des Jahres gleich sein sollen.

Optionen:
Zurücksetzen
%if_res%

Deckungsgleich mit dem eingegebenen Jahr sind die Jahre untenstehend:

Schaltjahr: %leap%

%else% %endif%