現在のページは  会員サポートトップ > 設定方法・サービス仕様 > Perl5対応について  です。

会員サポート:設定方法・サービス仕様

Perl5対応について

Perl4からPerl5への移行に関して

hi-hoでは、当初からPerl4に対応しておりましたが、世の中はPerl5が主流となり、CGIの解説書も、すべてPerl5対応となっています。
また、以前よりPerl5対応のご要望が多い為、今回対応いたします。

hi-ho提供のCGIについて

下記のCGIについて、一部修正が必要です。
再セットアップのwebを準備しましたので、再セットアップをお願いします。

再セットアップ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);

文法チェックの強化

  1. 特殊変数 $* や $[ の動作は保証されません。
    文字列の後ろに付くピリオド(.)は、perl4では演算子として利用可能でしたが、perl5では保証されません。
  2. 変数と文字を明確に区別するため ""の中に変数を書くと正しく解釈しない場合があります。
    (例:$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

メインコンテンツのトップに戻る