Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- my $year = shift(@ARGV);
- my $april = 'Aprile';
- my $march = 'Marzo';
- print "Uso: easter.pl ANNO\n" if ($year < 1000);
- print "Calendario gregoriano: " . easter($year, 1) ."\n";
- print "Calendario giuliano: " . easter($year, 0) ."\n";
- sub easter {
- my ($year, $gregorian) = @_;
- my $a = $year % 19;
- my $b = $year % 4;
- my $c = $year % 7;
- my $M = 15;
- my $N = 6;
- if ($gregorian > 0) {
- if ($year > 1582 and $year <= 1699) { $M = 22; $N = 2; }
- elsif ($year >= 1700 and $year <= 1799){ $M = 23; $N = 3; }
- elsif ($year >= 1800 and $year <= 1899){ $M = 23; $N = 4; }
- elsif ($year >= 1900 and $year <= 2099){ $M = 24; $N = 5; }
- elsif ($year >= 2100 and $year <= 2199){ $M = 24; $N = 6; }
- elsif ($year >= 2200 and $year <= 2299){ $M = 25; $N = 0; }
- elsif ($year >= 2300 and $year <= 2399){ $M = 26; $N = 1; }
- elsif ($year >= 2400 and $year <= 2499){ $M = 25; $N = 1; }
- else { return "<anno fuori range (1582-2499)>"; }
- }
- my $d = (19 * $a + $M) % 30;
- my $e = (2*$b + 4*$c + 6*$d + $N) % 7;
- if ( ($d + $e) < 10) {
- my $day = $d + $e + 22;
- return "$day $march";
- } else {
- my $day = $d + $e - 9;
- return "$day $april";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement