時間を取るときは、localtime()を使っていたけど、Time::localtimeを使ったほうが良さそう。


localtime()だと

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();

もしくは

my ($mday, $mon, $year) = (localtime)[3..5];

といつもやっていたが、Time::localtimeならオブジェクトとして値をとって扱える。

#! /usr/bin/perl

use strict;
use warnings;
use Time::localtime;
my $tm = localtime;
my ( $day, $month, $year ) = ( $tm->mday, $tm->mon, $tm->year );

printf ("the current date is %04d-%02d-%02d\n", $year+1900, ($tm->mon)+1, $tm->mday);
#the current date is 2011-07-10
 

そう大差はないのかもしれないが、よく使う処理と考えると要素番号をいちいち調べる必要もなくなるし、localtimeの複数の要素を使うほど便利そうです。