きよへろさんの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は便利です。