• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UTF8でperlスクリプトを書くと年月日が表示しない)

UTF8でperlスクリプトを書くと年月日が表示しない

このQ&Aのポイント
  • UTF-8で書かれたperlスクリプトで、年月日が表示されない問題について
  • EUCコードでスクリプトを書く場合には年月日が表示されるが、UTF-8で書くと表示されない
  • ダブルクォートで囲むと表示されないが、変数を連結していくと表示される

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

Perlはあまり良く知らないのですが use utf8; とすることで変数名に日本語を使えるようになるのではないでしょうか そのせいで$yy年 という変数として処理されているのでは PHPなら "${yy}年${mo}月${dd}日($day)$hh:$mm:$ss"; とするのですがPerlはどうでしょうか *PHPでは最初から変数に日本語が使えるのでよくこの間違いをやっていました

kiku_j
質問者

お礼

"${yy}年${mo}月${dd}日($day)$hh:$mm:$ss" とすることで問題なく表示できました! ありがとうございます!

その他の回答 (3)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.4

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で書いてた人がどう思うかは知りませんが。

kiku_j
質問者

お礼

ありがとうございます! >UTF-8でperlコードを書いてますが特に困ったことはないですね。 そうなんですね...ということは私の勉強不足ですね...精進します!

noname#70121
noname#70121
回答No.3

UTF8は時々こういうことありますね。 日本語の正規表現とかもうまく動かなかったりします。 もうこれはしょうがないと諦めて、問題が生じたら逐一処置するしかないですね。 こんなコードではうまく動きました。 $date = sprintf("%s年%s月%s日($day)$hh:$mm:$ss", $yy, $mo, $dd);

kiku_j
質問者

お礼

どうもありがとうございます! そうなんですね...今はまだEUCでスクリプトを書く方が安全なのでしょうか?

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

$yy年 = 2008; print $yy年; とか書いてエラー無く実行できるか確認してみては

kiku_j
質問者

お礼

ほんとですね!$yy年を変数とみなすのですね... 勉強になりました!ありがとうございます!

関連するQ&A