Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 日付・時刻

閏年(うるうどし)かどうかを判定する

閏年の判定方法は以下のようになります。

まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。

閏年(うるう年)かどうかを判定するサンプルです。
use strict;
use warnings;

# 1900年は閏年でない、2000年は閏年、2003は閏年でない、2004年は閏年。
print "(1)閏年の判定を行う。\n";
my @years = (1900, 2000, 2003, 2004); 

for my $year (@years) {
  if (is_leap_year($year)) {
    print "$year年は閏年です。\n";
  }
  else {
    print "$year年は閏年ではありません。\n";
  }
}

# 閏年を判定する関数。
sub is_leap_year {
  my $year = shift;

  # 4で割り切れなければ閏年ではない。
  return if $year % 4; 

  # 100で割り切れ、かつ400で割り切れなければ
  # 閏年ではない。
  return if !( $year % 100 ) && ( $year % 400 );

  # それ以外は閏年。
  return 1;
}

閏年(うるう年)かどうかを判定する。

閏年の判定方法は以下のようになります。

まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。

return if $year % 4; 

上記の判定で4で割り切れたものだけが残されます。サンプルの例でいうと ( 1900, 2000, 2003, 2004 ) のうち、( 1900, 2000, 2004 ) が残ります。

次に「100で割り切れてかつ400で割り切れない」という判定をします。この条件に合致するものは閏年ではありません。この条件に合致するのは1900です。

return if !( $year % 100 ) && ( $year % 400 );

上記の判定で、( 2000, 2004 )が残ります。これらが閏年です。

Giblog