会員サポート:設定方法・サービス仕様
Perl5対応について
Perl4からPerl5への移行に関して
hi-hoでは、当初からPerl4に対応しておりましたが、世の中はPerl5が主流となり、CGIの解説書も、すべてPerl5対応となっています。
また、以前よりPerl5対応のご要望が多い為、今回対応いたします。
hi-ho提供のCGIについて
下記のCGIについて、一部修正が必要です。
再セットアップのwebを準備しましたので、再セットアップをお願いします。
- Form to Mail
- ssendmail
- 掲示板
再セットアップURL:https://support.hi-ho.ne.jp/cgi_setup/cgi_change.html
※再セットアップでは、プログラムのみ上書きされ、データは変更されません。
ご自身でプログラム内容を変更されている場合は、元のデータをバックアップし、セットアップ後に 修正をお願いします。
ご自身でプログラムを作成されている場合
Perl5は、Perl4と比較してソケット関係の書式変更と文法チェックが厳しくなっています。
Perl4で動作していたCGIも、Perl5では、動作しない場合があります。
以下に、Perl4と、Perl5の主な違いを記載いたしますので、ご自身で修正をお願いいたします。
詳しくは、Perl関連書籍でご確認ください。
ソケットの定義と使用例
Perl4 | Perl5 | |
---|---|---|
ソケットの仕様定義(必須) | require 'sys/socket.ph'; | use Socket; |
ソケット用定数を必ず使用する | SOCK_STREAM SOCK_DGRAM AF_UNIX AF_INET PF_UNIX PF_INET |
|
ソケットの使用例 | socket($file, $AF_INET, $SOCK_STREAM, $proto) socket($file, 2, 1, $proto) |
socket($file, PF_INET, SOCK_STREAM, $proto) |
Packコマンドの使用例 | pack('S n a4 x8', 2, $port, $addr) pack('S n a4 x8', $AF_INET, $port, $addr) pack('S n a4 x8', ($AF_INET << 8), $port, $addr) |
pack_sockaddr_in($port, $addr); |
文法チェックの強化
- 特殊変数 $* や $[ の動作は保証されません。
文字列の後ろに付くピリオド(.)は、perl4では演算子として利用可能でしたが、perl5では保証されません。 - 変数と文字を明確に区別するため ""の中に変数を書くと正しく解釈しない場合があります。
(例:$user = "$ENV{'USER'}@$domain"; →$user = $ENV{'USER'}."@".$domain;)
プログラムが、Internal Server Error で動作しない場合は、 下記の方法でデバッグすることができます。 http://www.pat.hi-ho.ne.jp/cgi-bin/user/アカウント/xxxx.cgiの場合 ↓ http://www.pat.hi-ho.ne.jp/cgi-bin/check-user/アカウント/xxxx.cgi |
---|