sprintf を使って整形

やってみました。


#!/usr/bin/perl
use strict;
use warnings;

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

if ($wday == 0) {$jpwday = "日";}
elsif ($wday == 1) {$jpwday = "月";}
elsif ($wday == 2) {$jpwday = "火";}
elsif ($wday == 3) {$jpwday = "水";}
elsif ($wday == 4) {$jpwday = "木";}
elsif ($wday == 5) {$jpwday = "金";}
elsif ($wday == 6) {$jpwday = "土";}

print sprintf("%d年%02d月%02d日 %s曜日 %02d時%02d分%02d秒\n", $year+1900, $mon+1, $mday, $jpwday, $hour, $min, $sec);


> perl date.pl
2005年10月31日 月曜日 03時20分55秒
なるほど

  • sprintf( "出力内容(%フォーマット文字)" , $変数1,$変数2,...);
    • %d は10進数。%02d とやると 4 桁の 10 進数。4 桁ない場合は 0 で埋めてくれる
    • %s は文字列

if のところがもっと短くかけないものか。