- ベストアンサー
UTF8でperlスクリプトを書くと年月日が表示しない
- UTF-8で書かれたperlスクリプトで、年月日が表示されない問題について
- EUCコードでスクリプトを書く場合には年月日が表示されるが、UTF-8で書くと表示されない
- ダブルクォートで囲むと表示されないが、変数を連結していくと表示される
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Perlはあまり良く知らないのですが use utf8; とすることで変数名に日本語を使えるようになるのではないでしょうか そのせいで$yy年 という変数として処理されているのでは PHPなら "${yy}年${mo}月${dd}日($day)$hh:$mm:$ss"; とするのですがPerlはどうでしょうか *PHPでは最初から変数に日本語が使えるのでよくこの間違いをやっていました
その他の回答 (3)
- Werner
- ベストアンサー率53% (395/735)
sprintf使うなら0パディングはsprintfにやらせた方がすっきりすると思いますよ。 sub get_date { ($ss,$mm,$hh,$dd,$mo,$yy,$day)= localtime(time); $day = ("日","月","火","水","木","金","土")[$day]; return sprintf("%d年%02d月%02d日(%s)%02d:%02d:%02d", $yy+1900,$mo+1,$dd,$day,$hh,$mm,$ss); } > 今はまだEUCでスクリプトを書く方が安全なのでしょうか? 私がperlを使い始めたのはperl5.8以降からなので ずっとUTF-8でperlコードを書いてますが特に困ったことはないですね。 今までEUCで書いてた人がどう思うかは知りませんが。
お礼
ありがとうございます! >UTF-8でperlコードを書いてますが特に困ったことはないですね。 そうなんですね...ということは私の勉強不足ですね...精進します!
UTF8は時々こういうことありますね。 日本語の正規表現とかもうまく動かなかったりします。 もうこれはしょうがないと諦めて、問題が生じたら逐一処置するしかないですね。 こんなコードではうまく動きました。 $date = sprintf("%s年%s月%s日($day)$hh:$mm:$ss", $yy, $mo, $dd);
お礼
どうもありがとうございます! そうなんですね...今はまだEUCでスクリプトを書く方が安全なのでしょうか?
- php504
- ベストアンサー率42% (926/2160)
$yy年 = 2008; print $yy年; とか書いてエラー無く実行できるか確認してみては
お礼
ほんとですね!$yy年を変数とみなすのですね... 勉強になりました!ありがとうございます!
お礼
"${yy}年${mo}月${dd}日($day)$hh:$mm:$ss" とすることで問題なく表示できました! ありがとうございます!