Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
表示しない

perl からbash を起動させた結果

閲覧: 9 回
最初の未読メッセージにスキップ

Mi

未読、
2003/09/05 21:18:512003/09/05
To:
初心者ですので、よろしくお願いいたします。
CGIのスクリプトで
$a = `cal`;
print $a;

と書くと、このスクリプトをコンソールから実行すると日本語にローカライズされたカレンダーが表示されるのですが、ブラウザから実行すると、カレンダーの曜日部分は英語のままです。dateコマンドも同じなのですが、この結果を日本語表示させる方法がありましたら、教えていただければ嬉しいです。

Hidenori HoRi

未読、
2003/09/05 22:16:312003/09/05
To:
On 5 Sep 2003 18:18:51 -0700,


こんな感じでどうですか?

$ENV{'LANG'} = "ja_JP.eucJP";


$a = `cal`;
print $a;

サーバの環境によって、「ja_JP.eucJP」の記述が違うかもしれませんが.....
--
ほり <vg3...@moat.net>

Mi

未読、
2003/09/06 1:16:242003/09/06
To:
vg3...@moat.net (Hidenori HoRi) wrote in message news:<bjbg1v$175r$1...@LAXSRV.moat.net>...

> こんな感じでどうですか?
>
> $ENV{'LANG'} = "ja_JP.eucJP";
> $a = `cal`;
> print $a;
>
> サーバの環境によって、「ja_JP.eucJP」の記述が違うかもしれませんが.....

日本語の表示が出来ました!環境変数のことはよくわからなくて(たとえば、ここで言語の設定をするのは何が何に対してなのかよくわかりません。と、いうのは環境変数というのはシステムが持っているものかと思っていたものですから、同じシステムなのに???と考えていました。同じperlのスクリプトをコマンドからの実行では日本語表示されるということはこの環境変数はブラウザ向けということなのでしょうか?)まだ勉強不足なので、このあたりについてもっと学ぶつもりです。ありがとうございました。

IIJIMA Hiromitsu

未読、
2003/09/06 1:53:272003/09/06
To:
いいじまです。

> > こんな感じでどうですか?
> >
> > $ENV{'LANG'} = "ja_JP.eucJP";
> > $a = `cal`;
> > print $a;
> >
> > サーバの環境によって、「ja_JP.eucJP」の記述が違うかもしれませんが.....
>
> 日本語の表示が出来ました!環境変数のことはよくわからなくて

(以下略)

環境変数というのは、動作中のプログラムひとつひとつが保有しているものです。

ですから、同じシステムでも2人以上が同時に使っていればそれぞれの環境変数
の内容は異なったものになります。また、同じプログラムでも、ひとつひとつの
プログラムごとに違うものにすることができます。

たとえば、事前にふたつコンソールを立ち上げておいて、1つ目のコンソールで

$ export LANG=C
$ cal

として英語の表示が出ることを確認してから、それには手を触れずに(マウスで
ウィンドウを動かすだけならOK)、2つ目のコンソールで

$ export LANG=ja_JP.eucJP
$ cal

とすると、日本語の表示が出るはずです。そして最後に、この2つ目のコンソー
ルには手を触れずに、1つ目のコンソールに戻って、単に

$ cal

とだけしてみてください。2つ目のコンソールで LANG を日本語に設定したはず
なのに、ここでは英語の表示が出ますよね。さらにそこで

$ echo $LANG

とすると、「C」と表示されて、2つめのコンソールで LANG を変更した効果は
こちらには及んでいないことがわかります。

これを前提に種明かしをすると、コンソールからこの perl プログラムを実行し
たときには、コンソールにたどりつくまでのどこかの段階で、環境変数 LANG に
「日本語」を示す値がセットされるようになっています。たぶん、~/.bash_profile
とか、~/.profile とか、/etc/profile とか、そのあたりのファイルでしょう。

#man bash するとファイル名がいろいろ書いてあるので、それを片っ端から
#読んでみることをお勧めします。どのファイルがどの段階で読まれるのか、
#マニュアルを丁寧に読まないとわからないのが、この bash のマニュアルの
#難点なんですが…

一方、CGI として実行したときには、CGI を起動するのは httpd というプログ
ラムです。(もしかしたら、間に suexec というプログラムが介在するかもしれ
ませんが、それはここでは関係ありません)。で、CGI プログラムの環境変数は
httpd のから引き継がれるのですが、そちらの httpd の持っている環境変数一
覧では、LANG は日本語には設定されていないか、あるいは、どこかの段階で
「安全性・安定動作」を名目にして意図的に消されているか、どちらかです。

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

───【宣伝/ADVERTISEMENT】──────────────────────
fj.os.ms-windows.server2003 の新設に関する投票に多数のご参加をいただき、
ありがとうございました。Windows 関連のグループは今後も引き続き再編の議論
を行うことが予想されますので、引き続きご意見をいただければ幸いです。
────────────────────────────────────

Mi

未読、
2003/09/06 6:00:502003/09/06
To:
IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> wrote in message news:<3F597657...@ht.sakura.ne.jp>...

> 環境変数というのは、動作中のプログラムひとつひとつが保有しているものです。

こういうことも知らないのは勉強不足だったのかな、と反省(笑)。

>
> 一方、CGI として実行したときには、CGI を起動するのは httpd というプログ
> ラムです。(もしかしたら、間に suexec というプログラムが介在するかもしれ
> ませんが、それはここでは関係ありません)。で、CGI プログラムの環境変数は
> httpd のから引き継がれるのですが、そちらの httpd の持っている環境変数一
> 覧では、LANG は日本語には設定されていないか、あるいは、どこかの段階で
> 「安全性・安定動作」を名目にして意図的に消されているか、どちらかです。

丁寧なご説明ありがとうございました。bashの本を見て、始めて$ENV{'LC_LNG'}と
か、$ENV{'LNG'}という環境変数を目にしました。UNIXのことはまだわからないこと
ばかりですが、少しずつ楽しんでいきたいと思います。

Hidenori HoRi

未読、
2003/09/06 15:19:262003/09/06
To:
On 5 Sep 2003 22:16:24 -0700,

Mi <eastc...@hotmail.com> wrote:
> > こんな感じでどうですか?
> >
> > $ENV{'LANG'} = "ja_JP.eucJP";
> > $a = `cal`;
> > print $a;
> >
> > サーバの環境によって、「ja_JP.eucJP」の記述が違うかもしれませんが.....
>
> 日本語の表示が出来ました!環境変数のことはよくわからなくて(たとえば、ここで言語の設定をするのは何が何に対してなのかよくわかりません。と、いうのは環境変数というのはシステムが持っているものかと思っていたものですから、同じシステムなのに???と考えていました。同じperlのスクリプトをコマンドからの実行では日本語表示されるということはこの環境変数はブラウザ向けということなのでしょうか?)まだ勉強不足なので、このあたりについてもっと学ぶつもりです。ありがとうございました。


無事に表示できて良かったですね。(^^)
環境変数は後、例えば、CGIのスクリプトで使用したいタイムゾーンを
指定したり、とかですね(こっちの方がよく使われますよね、多分)。
--
ほり <vg3...@moat.net>

新着メール 0 件