perlのバージョンについて

[上に] [前に] [次に]
まつ 2000/05/27(土) 22:29:37
サーバーに入っているperlのバージョンについてですが、
私の使用しているサーバーには

his is perl, version 5.005_03 built for i386-linux
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-1999, Larry Wall

Japanization patch 4 by Yasushi Saito, 1996

Modified by Hirofumi Watanabe, 1996-1999
jperl5.005_03-990822
EUC version

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5.0 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

が入ってます。
やたらと、他で普通に動いて居たCGIが文字化け連発するので
気になったのですが、このバージョンって一般的なんでしょうか?
EUC Version や jperl がどうたらこうたらって部分が気になります

B-Cus 2000/05/27(土) 23:32:32
一般的です。

最近 perl5.6 が出ましたが、それまで1年以上 5.00503
が perl の安定版として使用されていました。
# もちろん 5.00503 にもバグはありますけどね。

> jperl がどうたらこうたらって部分が気になります
普通に
 #!/usr/local/bin/perl
として使っているなら、(japanization patch が当たっている
perl であっても) ただの perl として動作します。

> EUC Version や
jperl のコンパイル時に euc 版か sjis 版を指定しますが、
そのとき euc 版とした、ということです。ただし、
 #!/usr/local/bin/jperl -Leuc
 #!/usr/local/bin/jperl -Lsjis
などと、スクリプトごとに変更できます。

B-Cus 2000/05/27(土) 23:33:17
> EUC Version や
これは jperl として動作したときのみに関係あります。

まつ 2000/05/27(土) 23:41:40
[[解決]]
B-Cus さん。 有り難う御座います。
ほんと勉強なります。

> EUC Version や
これは jperl として動作したときのみに関係あります。

 ↑ という事は、サーバーはlinuxなので、今の私の状況では EUC Versionは関係ないと
 いう事ですよね?

 文字化けする原因が解らなかったもので、このEUCが何かあるのかと思っておりました。

>#!/usr/local/bin/jperl -Leuc
>#!/usr/local/bin/jperl -Lsjis
これを早速使わせて頂きました所、文字化けしなくなりました。

print "Content-type: text/html; charset=Shift_JIS\n\n";
を記述して対応しようと思っていたのですが、大変勉強になりました。
どうも有り難う御座いました。

B-Cus 2000/05/28(日) 00:06:52
> ↑ という事は、サーバーはlinuxなので、今の私の状況では
> EUC Versionは関係ないという事ですよね?
いいえ。Linux だから、ということはありません。基本的に
OS というのは文字コードを限定しません (Windows は知らない)。

一応まとめておくと、

perl はスクリプト中で日本語を扱える。
 - できるならスクリプトを EUC にするのが一番よい。
 - SJIS だと文字によっては \ や @ のコードが含まれているので
  化けることもあるが、使えなくはない
 - ISO-2022-JP (JIS) はダメ

で、jperl というのは japanized patch を当てた perl。
日本語単位での split などが可能になる。このとき、
スクリプトが EUC で書かれているか、SJIS で書かれて
いるかということに関係するのが
>#!/usr/local/bin/jperl -Leuc
>#!/usr/local/bin/jperl -Lsjis

> EUC version
の部分。

ただし jperl でも、普通に使うと perl として動作する。
 http://www.jp.FreeBSD.ORG/QandA/HTML/1218.html
# なので、ほとんどの人は jperl の機能を使っていないはず。

> print "Content-type: text/html; charset=Shift_JIS\n\n";
これはブラウザが文字コードを解釈するときのヒントを
与えているようなものなので、関係ありません。

今回のは「perl がスクリプト内の日本語をどう扱うか」という問題です。

[上に] [前に] [次に]