※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
■ 曜日を日本語で表示したい
さて、「時間関数について(localtime、timeなど)」のところで曜日を日本語にするにはちょっとした処理が必要だと記述しました。
ではその方法を解説していきましょう。
- 【 解 説 】
-
いくつかの方法はあるのですが、いずれにせよ、「変換テーブル」が必要になります。
「変換テーブル」とは対比表のようなもので、あるデータの集まりと1対1対応で作られた別のデータの集まりを言います。今回は、「時間関数について(localtime、timeなど)」で「localtime()」をリスト形式で取得した時の「$wday」を利用します。
「$wday」は「0〜6」の値を取りますので、「youbi」という単純な配列変数に日本語文字をセットしましょう。
その方法は、次のように記述します。
@youbi = qw(日 月 火 水 木 金 土);※「qw()」は、半角空白で区切られたリストを記述する時に使用するクォート風演算子です。
この場合、「$youbi[0]」は「日」で、「$youbi[1]」は「月」となります。
したがって、「$wday」の値と丁度対比していますから、日本語の曜日は次のように記述して表示できます。
print $youbi[$wday];
下記に、日本語の曜日を表示するサンプルを作ってみました。
下記のサンプルでの注意点は3箇所です。
1.1行目の「#!/usr/bin/perl」はサーバーによって違いますので確認してください。
2.表示文字列の最後にある「<br>\n」はそれぞれのHTMLの改行とテキストファイルの改行です。
3.「for{..}」は配列変数「youbi」の内容をテスト表示する処理です。
- 【記述サンプル】
- #!/usr/bin/perl print << "END_DOC"; Content-type:text/html\n\n <HTML> <HEAD> <title>曜日を日本語で表\示のテスト</title> </HEAD> <BODY> END_DOC @youbi = qw(日 月 火 水 木 金 土); for($i = 0;$i <= 6;$i++){ print "$youbi[$i]<br>\n"; } print "<br>\n"; ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(); print "今日の曜日:$youbi[$wday]<br>\n"; print << "END_DOC"; </BODY> </HTML> END_DOC