技術メモ

書いておぼえるブログ

'yyyy-mm-dd'形式の日付を比較するーPerlの文字列比較演算子

日付の前後を比較したいとき、Time::Pieceとかでepoch秒とかを計算してやるしかないのかーとおもっていたら、実は文字列比較演算子を使えばできると先輩がおしえてくれた。

文字列でありながら、量の比較ができるのだ。これには4種類がある。

小なり (less than) lt   
大なり(greater than)   gt   
以下 (less than or equal to) le   
以上 (greater than or equal to) ge   

たとえば、'2017-11-01'と'2017-11-30'という2つの文字列があるとして、どちらが進んだ日付なのかをしらべたいとする。

my $d1 = '2017-11-01';
my $d2 = '2017-11-30';

if ( $d1 le $d2 ) {
    print "$d1 is older date than $d2.\n";
}

これで日付を判定できる。

比較の仕組みは、左から1文字ずつ比較していって、文字列のソート順を参照して文字の大小を判定しているらしい。