'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文字ずつ比較していって、文字列のソート順を参照して文字の大小を判定しているらしい。