あなたの快適生活にリンクする、ハイホー。

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 require 'sys/socket.ph';
Perl5 use Socket;

ソケット用定数を必ず使用する

Perl5 SOCK_STREAM
SOCK_DGRAM
AF_UNIX
AF_INET
PF_UNIX
PF_INET

ソケットの使用例

Perl4 socket($file, $AF_INET, $SOCK_STREAM, $proto)
socket($file, 2, 1, $proto)
Perl5 socket($file, PF_INET, SOCK_STREAM, $proto)

ソケットの使用例

Perl4 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)
Perl5 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

このページのトップに戻る