UTF8でperlスクリプトを書くと年月日が表示しない
UTF-8で下記スクリプトを書いて実行すると、
$yy年$mo月$dd日 にあたる部分が表示されず、($day)$hh:$mm:$ss の部分しか表示されません。
------------------------------------
#!/usr/bin/perl
use utf8;
use Encode;
&get_date();
print "Content-type: text/html\;charset=utf-8\n\n";
print encode('utf8',"$date");
exit;
sub get_date {
($ss,$mm,$hh,$dd,$mo,$yy,$day)= localtime(time);
$day = ("日","月","火","水","木","金","土")[$day];
$yy = $yy+1900;
$mo++;
if ( $mo < 10 ) { $mo = "0$mo"; }
if ( $dd < 10 ) { $dd = "0$dd"; }
if ( $hh < 10 ) { $hh = "0$hh"; }
if ( $mm < 10 ) { $mm = "0$mm"; }
if ( $ss < 10 ) { $ss = "0$ss"; }
$date = "$yy年$mo月$dd日($day)$hh:$mm:$ss";
}
------------------------------
EUCコードでスクリプトを書いてencodeなど不要な部分を変更した場合は$yy年$mo月$dd日の部分も表示されます。
また、上記
$date = "$yy年$mo月$dd日($day)$hh:$mm:$ss";
の部分を下記のように変更すると表示されますが...
--------------------------
$date = $yy;
$date .="年";
$date .= $mo;
$date .="月";
$date .= $dd;
$date .="日";
$date .="($day)$hh:$mm:$ss";
--------------------------
なぜ一括してダブルクォートで囲むと表示されないのでしょうか?
今まではEUCでスクリプトを書いておりました。UTF8に翻弄されております...
どうぞよろしくお願いいたします。
お礼
なるほど、mmは時間の分を表すのですね。MMに修正して上手くいきました。 そうなのです。いま、VBAのアプリをVB.NETにポーティングしているところなのですが、VBAでは上手くいっていたのですが。 早速回答頂きありがとうございました。助かりました。