« 成人の日だった | トップページ | 携帯電話料金とか、雑談 »

2016年1月12日 (火)

perl スクリプト、初期代入もれの変数で苦労した

2016-01-13(水)晴れ

 暫く前から、メモみたいなものの管理を、インターネット上のサーバに入れたメモテキストなどで行うようになりました。例えば、買いたい本のリストとか、図書館で探す本のメモとか、、、ちょっとしたメモなどです。最初は紙のメモでしたが、持ってくるのを忘れたり、書き直しが大変だったりします。次はHP200LXの「ノート」とか、単なるテキストデータに移しましたが、散歩などの延長で図書館へ寄ったときなどは持ってきていないこともあります。携帯電話にしたら、携帯電話を取り替える度にデータをコピーする必要があります。ということで、データをインターネット上に借りているサーバに移しました。
 インターネット上にあったdiaryという、簡易なブログ用のperlスクリプトを使わせていただき、若干自分用に手直しして使用することにしました。メモデータをブログにアップしておくイメージです。閲覧したり、編集で内容を更新したりするわけです。これなら、PCからでも携帯電話からでも、最新データを見ることが出来ます。

Diaryblog01(入口画面)

Diaryblog02(完成した閲覧のログイン画面)

 「diary」のperlスクリプトには、書き込み用のadmin.cgiと、閲覧用のdiary.cgiがあります。admin.cgiにはパスワードを使用したログイン機能がありましたが、diary.cgiにはありませんでした。そこで以前、admin.cgiを参考にして、diary.cgiにパスワードの機能を追加していましたが、今回さらにクッキーの機能を追加しようとしました。

 このときに、題記のような「初期設定漏れ変数の件」で落とし穴にはまりました。
 サブルーチンなども正しくコピーし、処理ルートも見直しているのに、クッキーの機能が動きません。どう見ても同じなのに、admin.cgiでは動いているのに、コピーして入れたdiary.cgiでは動かないのです(クッキーが書き込まれない)。
 で、涙ぐましいテストの結果分かったことは、、クッキーの有効期間(日数)を設定する変数の初期代入の文1行が抜けていました。だから、有効期限満了日時の計算のとき、0日0秒後が満了となり、クッキーが書き込まれなかったわけです。

 ここで、Pythonとの違いを痛感しました。今まで使っていたPythonでは、変数へ値を代入する前に使用するとPythonのエラーが出ました。どうも、perlでは未代入だと、自動的に0とか空白に定義されるようです(いや、ちゃんと仕様を読んでいないのがまずいのですが、、)。エラーが出ないことで、惑わされていたようです。
 数日間、悩まされましたが、何とか動くようになりました。
 

|

« 成人の日だった | トップページ | 携帯電話料金とか、雑談 »

アプリケーション」カテゴリの記事

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/63058114

この記事へのトラックバック一覧です: perl スクリプト、初期代入もれの変数で苦労した:

« 成人の日だった | トップページ | 携帯電話料金とか、雑談 »