CGI関連
データを直接アクセスする時のUNIX(サーバー)とMS-DOS(クライアント)相対位置の違い(recacc.pl)
サーバー(UNIX)とクライアント(Windows/MS-DOS)では'\n'の取り扱いが異なる。
UNIXでは1バイトとして書き込まれるが、Windows/MS-DOSでは2バイトに変換される(テキストモード)
よってレコードの位置を直接アクセスするプログラムではサーバーとクライアントで位置の把握が異なってしまう。
モジュールrecacc.plではレコード位置をインデックスファイルに書き込み管理、またレコード終端を'\n'により把握してるので、
サーバーとクライアント間でのデータ互換はない。
【対策】サーバーのデータをダウンロードして操作するときはインデックスファイルを変換する。
【方法】インデックスファイルのレコード位置n-1(1 ORG)を加算して書き換える。データをサーパーへアップロードする時は逆の変換をする。
CGIプログラムへのアクセス失敗時のメッセージ(@nifty)
コンパイルエラーやパッケージ等のリンクエラーの時もサーバーからは「アクセス許可が設定されていません」「URLが間違えています」「ホームページが存在しません(閉鎖されました)」
というメッセージが出て原因の追求が混乱してしまう。
【対策】アップロード前のコンパイルチェック(PERLは-cwオプション)でチェックしておく。
漢字コードの文字化け(CGI)
SJISでprint "XX"; を使用して文字列の中にメタ文字が含まれていた場合、文字化けする。
文字化けする文字がわかっている場合、その文字の後ろにバックスラッシュ(\)を入れる。
(例) print "表\示";
また、シングルクォーテーションで囲めば、(展開が行われないので)文字化けしない。