きよへろさんのPerlコードをリファクタリングしてみる
ハテナオヤさんのところでやってる「きよへろのPerlコードをリファクタしようのコーナー No.2」を自分でも書いてみる。
課題は、
「スクリプトを実行することで、現在の日付を返すスクリプト」
#!/usr/bin/perl
use strict;
use warnings;
my @lt = localtime;
printf("%04d/%02d/%02d %02d:%02d:%02d",$lt[5]+1900,$lt[4]+1,@lt[3,2,1,0]);
何が違うかと言うと、$year、$month、、と変数を使わないあたり。キーボードのストロークが少なくて済みます。
日付の処理はなんども使うので、5=year、4=month、、と覚えてしまう。
でも、「覚える」で終わっては、あまり良くないので
#!/usr/bin/perl
use strict;
use warnings;
my $LT_YEAR=5;
my $LT_MONTH=4;
my $LT_DAY=3;
my $LT_HOUR=2;
my $LT_MIN=1;
my $LT_SEC=0;
my @lt = localtime;
printf("%04d/%02d/%02d %02d:%02d:%02d",
$lt[$LT_YEAR]+1900,$lt[$LT_MONTH]+1,
@lt[$LT_DAY,$LT_HOUR,$LT_MIN,$LT_SEC]);
と書いてみたり。
あとは、constantやReadOnlyにしたり外部のモジュールにしたり。
やはりTime::Pieceは便利です。